我正在尝试使用flex和bison来创建一个简单的脚本语言.现在,我只是想让计算器正常工作.

但是我无法编译它.当我运行这个makefile时:

OBJECTS = hug.tab.o hug.yy.o
PROGRAM = hug.exe

CPP = g++
LEX = flex
YACC = bison

.PHONY: all clean

all: $(OBJECTS)
$(CPP) $^ -o $(PROGRAM)

clean:
$(RM) *.o *.output *.tab.* *.yy.* $(PROGRAM)

%.tab.o: %.tab.cpp
$(CPP) -c -o $@ $<

%.tab.cpp: %.ypp
$(YACC) -vd $<

%.yy.o: %.yy.c
$(CPP) -c -o $@ $<

%.yy.c: %.l
$(LEX) -o $@ $<

%.o: %.cpp
$(CPP) -c -o $@ $<

在我的.l和.ypp文件中,我收到此错误:

undefined reference to `yylex()'

如果我像这样为所有人发出命令:

$(CPP) $^ -o $(PROGRAM) -lfl

它说找不到-lfl.如果我这样做:

$(CPP) $^ -o -lfl $(PROGRAM)

它回到未定义的引用错误.

对不起,我对此毫无头绪.

编辑:我已经安装了flex.我尝试将它从-lfl更改为C:/GnuWin32/lib/libfl.a(我正在尝试使用Windows,因为Linux在我的计算机上有奇怪的问题而我还没有Mac),但它仍然有同样的错误.

解决方法

问题是你用g(将其视为C)而不是gcc编译hug.yy.c.这是定义yylex的文件,因此通过将其编译为C,您最终会得到C yylex函数,而其他文件正在寻找C yylex函数.

尝试坚持extern“C”int yylex();进入hug.l文件的第一部分,这样它就会使用C链接来代替C来代替yylex

g – 对’yylex()’的未定义引用的更多相关文章

  1. swift - function 与closure的同异

    functionclosure参数之间以,相隔YY有内参与名外参名YY自动定义外参名YN参数支持var,inout关键字YY参数支持可变个数YY设置参数默认值YNcapturefromenclosingscopeYY泛型YNtrailingclosure语法NY就地定义和赋值NY根据内容推导参数和返回值NY速度参数,如$0NY对于只条一句的情况,可以推导出returnNY

  2. Swift for OS X编译Linux?

    我对其他平台上Swift的构建过程感到困惑.Swift是否允许我在OSX上构建Linux项目,或者我是否需要在Linux上专门使用Swift来构建我计划在那里使用的任何东西?我查看了documentation,但这个主题并不是很清楚……

  3. Android ICS编译问题

    我成功下载了Android4.0.3的源代码.但我无法在我的机器上编译它.我的机器配置是UBUNTU11.1064位,4GBRAM当我运行午餐命令时收到以下错误.JDK已经在路径中.当我运行命令java-version时,我正在关注OutPut任何人都可以帮助继续吗?解决方法如果检查脚本build/core/find-jdk-tools-jar.sh,则可以看到它首先检查名为ANDROID_JAVA_HOME的环境变量.如果将ANDROID_JAVA_HOME环境变量设置为JDK路径,则应修复此错误.

  4. android-ndk – 使用arm-linux-androideabi-gcc编译对象的问题

    背景OSX是OS>R8NDK我正在使用AndroidGCC编译器来编译下面的类…我用以下命令做…所以由于缺乏gcc知识,我发现这一点,并尝试…有人可以帮我做我做错了吗?我错过了一个链接吗?解决方法您必须告诉GCC在哪里找到Android系统文件和标题.使用:>ndk-build和一个带有BUILD_EXECUTABLE的Android.mk>或–sysrootGCC选项[1][2]

  5. 如何使用cygwin / mingw在Windows上编译PHP扩展?

    我正在尝试使用Cygwin在Windows上构建RabbitMQPHPwrapper和AMPQPHPwrapper.我已经成功构建了底层的C库,但我陷入了’PHPize’步骤:PHPize&&./configure–with-rabbit&&制造&&sudomakeinstall如果我理解正确,Windows上没有’PHPize’,那么如何构建我的PHP包装器?

  6. 在windows下运行linux gcc编译的程序

    好的,伙计们,希望这是一个非常简单的问题:有没有办法在Windows操作系统上使用gcc运行在linux下编译的C程序?请不要告诉我在windows下重新编译它,因为我已经尝试但看起来没有cwindows编译器有128位原生类型,并且使用bignum库使我的程序比10到100倍慢.有没有办法在Windows下实际运行linux二进制文件?有人告诉我一些关于cygwin的事情,但我不知道从哪里开始..非常感谢你!!

  7. 如何在Debian上编译DOS程序?

    对于我的汇编语言类,我们正在使用DPMI编写DOS程序.不幸的是,我一直没有访问32位Windows机器.在我使用的每台电脑上都安装了Debian虚拟机.我已经安装了DOSBox和DOSEMU.有什么办法可以在Linux而不是DOS中汇编和编译程序吗?我使用nasm,所以我似乎没有任何问题得到它在DOS格式化.但是,我无法通过编译器运行C代码并获得DOS可执行文件.有没有办法做到这一点,或者我将不得不在DOS下安装所有的工具?

  8. 在windows和linux上编译

    我是c的新手,我已经给了一些源代码,别人写的是在Windows上编译的.在linux编译之后,我有错误,因为linux不支持DWORD,WORD和UINT32.我有6个文件例如.A.h,A.c,B.h,B.c,C.h,C.c.这些关键字在所有文件中.所以我正在考虑2种可能的解决方案.哪个更好#define或typedef.1)2)对于第二部分,我想知道我应该把这些声明放在哪里.他们应该在头文件中,还是应该在源文件中?

  9. Windows – Qt MinGW另一个未定义的引用“WinMain @ 16”问题

    我尝试了一大堆C标志,但没有工作.有魔术吗附:当然我可以在Linux上搭建i386/amd64解决了:我只需要将以下行添加到创建库的.pro文件中:解决了:我只需要将以下行添加到创建库的.pro文件中:

  10. centos – 用古董glibc编译现代海湾合作委员会的麻烦

    我想在Centos6.4上编译一个现代的GCC.问题是Centos没有现代的glibc和GCC4.8.x和4.7.x继续给我以下编译错误:这里的问题是gnu/stubs-32.h是现代glibc的一部分,Centos6.4似乎没有它.我已经尝试构建自己的glibc,但是一旦安装它并且在我的本地LD_LIBRARY_PATH中我就无法运行任何其他程序,因为系统上的所有现有可执行文件都试图链接它并且它们失败了.我想使用新的编译器,因为它可以更好地处理CSTL代码,并且因为GCC4.8中的优化器使我的代码运行时

随机推荐

  1. arcgis api for flex之专题图制作饼状图,柱状图等

    总结以上是DEVMAX为你收集整理的arcgisapiforflex之专题图制作饼状图,柱状图等全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  2. arcgis for flex或silverlight全国地图天气预报的实现

    总结以上是DEVMAX为你收集整理的arcgisforflex或silverlight全国地图天气预报的实现全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  3. 天津政府应急系统之GIS一张图arcgis api for flex讲解十一路径导航模块

    总结以上是DEVMAX为你收集整理的天津政府应急系统之GIS一张图arcgisapiforflex讲解十一路径导航模块全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  4. arcgis for flex全国地图天气预报的具体实现过程解析

    总结以上是DEVMAX为你收集整理的arcgisforflex全国地图天气预报的具体实现过程解析全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  5. 天津政府应急系统之GIS一张图arcgis api for flex讲解四地图导航控件模块

    总结以上是DEVMAX为你收集整理的天津政府应急系统之GIS一张图arcgisapiforflex讲解四地图导航控件模块全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  6. BlazeDS

    总结以上是DEVMAX为你收集整理的BlazeDS全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  7. 【Flex】读取本地XML,然后XML数据转成JSON数据

    总结以上是DEVMAX为你收集整理的读取本地XML,然后XML数据转成JSON数据全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  8. 【Flex】读取本地JSON,然后JSON数据转成XML数据

    总结以上是DEVMAX为你收集整理的读取本地JSON,然后JSON数据转成XML数据全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  9. 【Flex】编辑器的缩放功能绝对定位和相对定位

    总结以上是DEVMAX为你收集整理的编辑器的缩放功能绝对定位和相对定位全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  10. 如何实现一个自己的嵌入式语言y

    总结以上是DEVMAX为你收集整理的如何实现一个自己的嵌入式语言y全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

返回
顶部