在阅读了大量的gcc docomentation和类似的问题后,我的问题仍然存在 我试图将我的libluajit.a静态链接到我的项目中,但无论我尝试哪种命令组合,都会弹出一个或另一个错误。我已经用动态链接成功编译了我的项目 现在我没有想法,所以我现在得到了什么:
./LuaHost/LuaSrc/libluajit.a(lj_clib.o): In function `lj_clib_index':
lj_clib.c:(.text+0x1c0): undefined reference to `dlsym'
./LuaHost/LuaSrc/libluajit.a(lj_clib.o): In function `lj_clib_load':
lj_clib.c:(.text+0x2c8): undefined reference to `dlopen'
lj_clib.c:(.text+0x350): undefined reference to `dlerror'
lj_clib.c:(.text+0x424): undefined reference to `dlopen'
还有一些错误:
{
"server.urls": "http://localhost:5010;http://localhost:5012"
}
libluajit.a已经在同一台机器上编译,一个RaspberryPi。
答案 0 :(得分:1)
我认为-static
不是你追求的。 -static
将构建static application
并且不意味着link this static library to the application
。
这里有一些选择。当您与-lluajit
关联时,您可以删除该库的动态.so
版本。 gcc将默认为动态链接,但在动态库不可用或未找到时将回退到静态链接。
而不是-lluajit
,您可以直接指向静态库文件 - 将其视为对象输入文件:/usr/lib/libluajit.a
。
我认为推荐的方法是告诉链接器如何链接你的库。尝试使用-Wl,-Bstatic -lluajit
。您可以在库名称前面的Bstatic
和Bdynamic
之间切换,以防您链接到多个库并希望以不同方式链接它们。