编译生成dylib时遇ld链接错误:无法与lua主可执行文件链接
问题解决:生成dylib时链接lua可执行文件报错
错误根源
你当前命令里直接指定了/usr/local/bin/lua——这是Lua的可执行程序文件,而非用于链接的库文件(静态库.a或动态库.dylib)。链接器无法将动态库与另一个可执行文件进行链接,因此抛出错误。
另外,你的命令缺少生成动态库的关键参数-dynamiclib,默认情况下g++会生成可执行文件,而非动态库。
修正后的命令
g++ -std=c++11 -dynamiclib rewrite.cpp Utilities/*.cpp -fpermissive -I /Users/x/Desktop/lua-5.1 -L/Users/x/Desktop/libs -L/usr/local/lib -llua -lm -ldl -o /Users/x/Desktop/Code/Result.dylib -v
关键修改点
- 添加
-dynamiclib:告诉g++生成动态库(dylib)而非可执行文件 - 替换
/usr/local/bin/lua为-llua:链接Lua的库文件,-L/usr/local/lib指定Lua库所在目录(如果你的Lua库不在这个路径,替换为实际路径)
如果你的Lua库是自己编译的(比如在/Users/x/Desktop/lua-5.1目录下),确保该目录下有liblua.a或liblua.dylib,并调整-L参数指向该目录:
g++ -std=c++11 -dynamiclib rewrite.cpp Utilities/*.cpp -fpermissive -I /Users/x/Desktop/lua-5.1 -L/Users/x/Desktop/libs -L/Users/x/Desktop/lua-5.1 -llua -lm -ldl -o /Users/x/Desktop/Code/Result.dylib -v
内容的提问来源于stack exchange,提问作者Big Bored
相关产品推荐
相关产品推荐

