ld:找不到建筑的符号

时间:2014-12-13 23:36:52

标签: c++ macos g++ x86-64 sdl-2

首先,我想说我已经意识到这已被问了十几次,而且我已经阅读了无数的解决方案而没有任何运气,因此我再次提出要求。

我正在使用OS X Mavericks 10.9.5,在Sublime 3中编写并使用带有g ++的终端进行编译

我正在尝试编译这个简单的文件(test.cpp)

#include <iostream>
#include <SDL2/SDL.h>

int main () {
    if(SDL_Init(SDL_INIT_VIDEO)) {
    std::cout << "I made it this far" << std::endl;
    }
    return 0;
}

编译器行:

g++ test.cpp

这将返回错误:

Undefined symbols for architecture x86_64:
    "_SDL_Init", referenced from:
         _main in test-ebbae4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

所以,我尝试添加了很多不同的标记,-m32只会更改结果以抛出Undefined symbols for architecture i386:ld: symbol(s) not found for architecture i386

我尝试过不同的-arch版本,但我似乎无法让它发挥作用。还玩了-l -I旗帜,但我不确定我知道他们做了什么/如何帮助他们......

有没有人知道接下来要做什么?

编辑:一些其他信息。我已经尝试使用.framework for SDL2,它没有改变任何东西,目前我正在使用通过编译源代码安装SDL2。标题位于usr/local/SDL2

1 个答案:

答案 0 :(得分:2)

  

g ++ test.cpp

您也应该指定SDL库:

g ++ test.cpp -lsdl2

如果编译器驱动程序不熟悉,则可能需要包含路径:

g ++ test.cpp -L / path / to / the / library -lsdl2