问题描述
我不会确切地说我是c ++的新手,但是我完全被这个问题打败了。我正在尝试在Windows上使用msys2和mingw32-w64(mingw的64位版本)编译用于retroarch的commodore 64仿真器:https://github.com/libretro/vice-libretro。我有链接错误...
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ./vice/src/monitor/mon_parse.o:mon_parse.c:(.text+0x9ca): undefined reference to `yylex'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ./vice/src/monitor/mon_parse.o:mon_parse.c:(.text+0x2bdd): undefined reference to `make_buffer'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ./vice/src/monitor/mon_parse.o:mon_parse.c:(.text+0x2c03): undefined reference to `free_buffer'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ./vice/src/monitor/mon_parse.o:mon_parse.c:(.rdata$.refptr.last_len[.refptr.last_len]+0x0): undefined reference to `last_len'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ./vice/src/monitor/mon_parse.o:mon_parse.c:(.rdata$.refptr.opt_asm[.refptr.opt_asm]+0x0): undefined reference to `opt_asm'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ./vice/src/monitor/mon_parse.o:mon_parse.c:(.rdata$.refptr.new_cmd[.refptr.new_cmd]+0x0): undefined reference to `new_cmd'
collect2.exe: error: ld returned 1 exit status
mingw32-make: *** [Makefile:397: vice_x64_libretro.dll] Error 1
从我的研究来看,undefined reference to 'yylex'
似乎表明我错过了flex或bison。我尝试使用pacman -S bison flex
将它们都安装在msys2 shell中,这会在安装文件夹C:\msys64\usr\lib
libfl.a
和
liby.a
我试图通过添加以下内容来修改项目的makefile,以在编译时搜索此位置...
LDFLAGS += --shared -static-libgcc -static-libstdc++ -Wl,--version-script=$(CORE_DIR)/libretro/link.T -L/usr/x86_64-w64-mingw32/lib -L/usr/lib
LDFLAGS += -lws2_32 -luser32 -lwinmm -ladvapi32 -lshlwapi -lwsock32 -lws2_32 -lpsapi -liphlpapi -lshell32 -luserenv -lmingw32 -shared -lgcc -lm -lmingw32 -lfl -ly
请注意添加了-L/usr/lib
和-lfl -ly
但是当我这样做时,编译器抱怨找不到库
cannot find -lfl
cannot find -ly
因此,我搜索了肯定要从中加载lib的其他位置,搜索libgcc.a发现它位于C:\msys64\mingw64\x86_64-w64-mingw32\lib
中,所以我猜目录的映射方式有所不同。
好的,所以我将两个.a文件放在该文件夹中,现在我回到页面顶部显示的错误,特别是undefined reference to 'yylex'
请问我如何在earch上解决此问题,今天我整天都在用监视器砸头,任何帮助都将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)