【问题标题】:linker command failed, sdl链接器命令失败,sdl
【发布时间】:2016-11-25 00:11:29
【问题描述】:

我正在尝试编译我的第一个 SDL 程序,但它无法编译。顺便说一句,我猜这不应该是关于设置库,因为我认为我正确安装了库。

这是我的命令:

g++ main.cpp -o main -I/Library/Frameworks/SDL2.framework/Headers -framework SDL2

这是我的代码:

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

int main(int argc, char **argv){
    if (SDL_Init(SDL_INIT_EVERYTHING) != 0){
        std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
        return 1;
    }
    SDL_Quit();

    return 0;
}

这是错误信息:

clang: error: linker command failed with exit code 1 (use -v to see invocation)

调用:

Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.9.0 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name main.cpp -mrelocation-model pic -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 224.1 -v -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -I /Library/Frameworks/SDL2.framework/Headers -stdlib=libc++ -fdeprecated-macro -fdebug-compilation-dir /Users/yunusaydin -ferror-limit 19 -fmessage-length 80 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.9.0 -fobjc-dispatch-method=mixed -fobjc-default-synthesize-properties -fencode-extended-block-signature -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/ss/mltsqt6n3jn2kv85gmyn060r0000gn/T/main-Ref4XX.o -x c++ main.cpp
clang -cc1 version 5.0 based upon LLVM 3.3svn default target x86_64-apple-darwin13.1.0
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/v1"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /Library/Frameworks/SDL2.framework/Headers
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks (framework directory)
End of search list.
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.9.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -o main /var/folders/ss/mltsqt6n3jn2kv85gmyn060r0000gn/T/main-Ref4XX.o -framework SDL2 -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.0/lib/darwin/libclang_rt.osx.a
ld: framework not found SDL2

我做错了什么?感谢您的帮助:)

【问题讨论】:

  • 应该. 是标题路径中的``?
  • 我更新了。您如何看待这个问题?
  • 您是否尝试过使用-v to see invocation
  • framework not found SDL2,您没有链接 SDL 库。
  • 我认为是g++ (your other stuff here) -l&lt;Library Name&gt;。在您的情况下,我假设您的库名称是SDL。您应该在某处为 SDL 提供 .lib,尝试使用它的名称。

标签: c++ sdl clang


【解决方案1】:

最后,这个命令起作用了:

g++ main.cpp -o main -I/Library/Frameworks/SDL2.framework/Headers -F/Library/Frameworks -framework SDL2

【讨论】:

  • 是的,这也适用于我,但对于存储在 /System/Library/Frameworks 中的框架,我只需要 -framework 选项(例如 OpenGL)。为什么?
  • wcochran:我也想知道。根据 GCC 手册,该路径应该已经在默认搜索路径中 gcc.gnu.org/onlinedocs/gcc-4.4.4/gcc/Darwin-Options.html
【解决方案2】:

/Library/Frameworks/SDL2.framework/Headers 可能在您的系统上不存在。

【讨论】:

  • 是的,你是对的。应该是/Library/Frameworks/SDL2.framework/Headers,所以我改了,但现在它说clang: error: linker command failed with exit code 1 (use -v to see invocation)
  • 如果它不存在怎么办?我通过brewbrew install sdl2安装了SDL2,但是SDL2.framework文件夹不存在...
猜你喜欢
  • 2012-09-21
  • 2016-10-18
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多