Macos OS X 10.8上的gcc链接/分段故障问题
这是一个关于发生了什么的小故事。我目前正在构建许多东西(包括SDL、SDL_映像等),并将它们链接到一个可执行文件中,然后手动执行。我正在制作自己的定制makefile,并且只使用命令行,而不是Xcode。(我不喜欢Xcode)到目前为止,我已经成功地完成了所有这一切,但我想开始在我的代码上添加Lua脚本,所以我现在正在编译luajit2.0,并尝试将其链接进来 然而,虽然SDL工作正常,我可以打开一个带有加载图像的窗口,但luajit拒绝正确链接。它给了我dyld:库没有加载。。。消息,引用/usr/local/lib,尽管它不仅不存在,而且在命令行中为保存我构建的luajit的文件夹提供了-L。在我的二进制文件中使用otool-L可以得到那个目录,尽管它在那个里根本不存在 在尝试用谷歌搜索这个问题时,我遇到了一个解决方案,它给了我这个命令:Macos OS X 10.8上的gcc链接/分段故障问题,macos,gcc,linker,Macos,Gcc,Linker,这是一个关于发生了什么的小故事。我目前正在构建许多东西(包括SDL、SDL_映像等),并将它们链接到一个可执行文件中,然后手动执行。我正在制作自己的定制makefile,并且只使用命令行,而不是Xcode。(我不喜欢Xcode)到目前为止,我已经成功地完成了所有这一切,但我想开始在我的代码上添加Lua脚本,所以我现在正在编译luajit2.0,并尝试将其链接进来 然而,虽然SDL工作正常,我可以打开一个带有加载图像的窗口,但luajit拒绝正确链接。它给了我dyld:库没有加载。。。消息,引用/
install\u name\u tool-id`pwd`/install/lib/libluajit-5.1.dylib install/lib/libluajit-5.1.dylib
。()在重建二进制文件并在其上使用otool之后,我现在看到了库的正确目录。然而,现在,虽然它没有给我dyld错误,但在我使用luajit函数时,它给了我一个segfault。(特别是luaL_newstate)
生成二进制文件的命令如下所示:
gcc -g -Wall -arch x86_64 -framework Cocoa -Iinstall/include -Linstall/lib src/native/main.c -lluajit-5.1.2.0.0 -lSDL2_image -lSDL2 -lSDL2main -lpng -lz -o game
libluajit-5.1.2.0.0.dylib,以及所有相应的符号链接都位于install/lib中。lua include文件位于安装/包含中。这里怎么了?我很困惑,想让这个开始工作。我宁愿与代码较量,也不愿与gcc和osx较量
编辑:根据请求,在当前“Segmentation fault:11”错误之前我得到的上一个错误基本上是:
dyld: Library not loaded: /usr/local/lib/luajit-5.1.2.dylib
Referenced from: <my application, forgot this exact bit>
Reason: image not found
即使libluajit在./install/lib.中,共享库也有一个安装路径。这意味着您必须使用正确的前缀进行构建和安装,请参阅安装文档。或者考虑链接到静态的LuaJIT库——从非系统位置加载动态库是一种蠕虫。
SEG故障是由于未遵循OSX/x64的安装路径造成的。共享库具有安装路径。这意味着您必须使用正确的前缀进行构建和安装,请参阅安装文档。或者考虑链接到静态的LuaJIT库——从非系统位置加载动态库是一种蠕虫。
segfault是由于没有遵循OSX/x64的要求而造成的。为什么不让自己的生活变得简单并使用:
$xcode选择-开关/Applications/xcode.app/Contents/Developer
$sudo端口自更新
$sudo端口安装libsdl\u image luajit
然后,您可以专注于您的项目,并了解到一个合格的团队正在处理所有其他事情。为什么不让自己的生活变得轻松并使用:
$xcode选择-开关/Applications/xcode.app/Contents/Developer
$sudo端口自更新
$sudo端口安装libsdl\u image luajit
然后,您可以专注于您的项目,并知道有一个合格的团队正在处理所有其他事情。在询问错误消息时,发布准确的错误消息总是明智的……我当前的错误消息,字面上是:分段错误:11。我想说我有缺陷就足够了。如果你愿意,我可以在中编辑。当询问错误消息时,发布准确的错误消息总是明智的…我当前的错误消息,字面上是:分段错误:11。我想说我有缺陷就足够了。如果你愿意,我可以在中编辑。虽然我很感激你的建议(我也知道Macports和homebrew),但这不是我现在想要做的。这最终旨在跨多个平台进行编译,而Macports(显然)只在Mac上工作:)出于这个原因,我正试图使整个构建完全独立。尽管我很欣赏这些建议(我也知道Macports和homebrew),但我现在不想这么做。这最终是为了能够跨多个平台进行编译,而Macports(显然)只在Mac上工作:)我正试图让整个构建完全独立,因为这个原因Gah,我觉得自己像个白痴。我想我已经通读了嵌入说明。我完全忽略了这一点,对于这种类型的计算机来说,非常具体的一点。非常感谢您指出这一点,Lua现在正在工作,因为我已经在链接步骤中添加了这一点:)而且我在构建时确实正确设置了前缀,所有的libs/includes/等都被转储到$(PROJECT)/installGah中,我觉得自己像个白痴。我想我已经通读了嵌入说明。我完全忽略了这一点,对于这种类型的计算机来说,非常具体的一点。非常感谢您指出这一点,Lua现在正在工作,因为我已经在链接步骤中添加了该位:)而且我在构建时确实正确设置了前缀,所有libs/includes/等都被转储到$(PROJECT)/install中
MacBook-Air:old freezerburn$ otool -L game
game:
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 19.0.0)
/usr/local/lib/libluajit-5.1.2.dylib (compatibility version 2.0.0, current version 2.0.0)
/Users/freezerburn/Dropbox/Code/lua_engine/old/install/lib/libSDL2_image-1.2.0.dylib (compatibility version 9.0.0, current version 9.5.0)
/Users/freezerburn/Dropbox/Code/lua_engine/old/install/lib/libSDL2-2.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/Users/freezerburn/Dropbox/Code/lua_engine/old/install/lib/libpng15.15.dylib (compatibility version 30.0.0, current version 30.0.0)
/Users/freezerburn/Dropbox/Code/lua_engine/old/install/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.7)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)