Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos OS X 10.8上的gcc链接/分段故障问题_Macos_Gcc_Linker - Fatal编程技术网

Macos OS X 10.8上的gcc链接/分段故障问题

Macos OS X 10.8上的gcc链接/分段故障问题,macos,gcc,linker,Macos,Gcc,Linker,这是一个关于发生了什么的小故事。我目前正在构建许多东西(包括SDL、SDL_映像等),并将它们链接到一个可执行文件中,然后手动执行。我正在制作自己的定制makefile,并且只使用命令行,而不是Xcode。(我不喜欢Xcode)到目前为止,我已经成功地完成了所有这一切,但我想开始在我的代码上添加Lua脚本,所以我现在正在编译luajit2.0,并尝试将其链接进来 然而,虽然SDL工作正常,我可以打开一个带有加载图像的窗口,但luajit拒绝正确链接。它给了我dyld:库没有加载。。。消息,引用/

这是一个关于发生了什么的小故事。我目前正在构建许多东西(包括SDL、SDL_映像等),并将它们链接到一个可执行文件中,然后手动执行。我正在制作自己的定制makefile,并且只使用命令行,而不是Xcode。(我不喜欢Xcode)到目前为止,我已经成功地完成了所有这一切,但我想开始在我的代码上添加Lua脚本,所以我现在正在编译luajit2.0,并尝试将其链接进来

然而,虽然SDL工作正常,我可以打开一个带有加载图像的窗口,但luajit拒绝正确链接。它给了我dyld:库没有加载。。。消息,引用/usr/local/lib,尽管它不仅不存在,而且在命令行中为保存我构建的luajit的文件夹提供了-L。在我的二进制文件中使用otool-L可以得到那个目录,尽管它在那个里根本不存在

在尝试用谷歌搜索这个问题时,我遇到了一个解决方案,它给了我这个命令:
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的要求而造成的。

为什么不让自己的生活变得简单并使用:

  • 安装macports
  • $xcode选择-开关/Applications/xcode.app/Contents/Developer
  • $sudo端口自更新
  • $sudo端口安装libsdl\u image luajit
  • 这将安装您请求的端口和任何依赖项


    然后,您可以专注于您的项目,并了解到一个合格的团队正在处理所有其他事情。

    为什么不让自己的生活变得轻松并使用:

  • 安装macports
  • $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)