通过终端用g ++编译器编译SFML

时间:2018-09-26 17:57:29

标签: c++ terminal visual-studio-code sfml

这是我在终端中输入的内容:

g++ -g -I/Users/cjm10000/Desktop/7701X/code/include/SFML-2.4.2-osx-clang/include -L/Users/cjm10000/Desktop/7701X/code/include/SFML-2.4.2-osx-clang/lib -l libsfml-graphics.2.4.2.dylib -lsfml-window-d -lsfml-system-d virtual_field.cpp -o virtual_field

我对此感到麻烦,因为它告诉我它找不到包含的库。

ld: library not found for -llibsfml-graphics.2.4.2.dylib
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果需要更多上下文,这里是整件事:

Carloss-MacBook-Pro:src cjm10000$ g++ -g -I/Users/cjm10000/Desktop/7701X/code/include/SFML-2.4.2-osx-clang/include -L/Users/cjm10000/Desktop/7701X/code/include/SFML-2.4.2-osx-clang/lib -l libsfml-graphics.2.4.2.dylib -lsfml-window-d -lsfml-system-d virtual_field.cpp -o virtual_field
ld: library not found for -llibsfml-graphics.2.4.2.dylib
clang: error: linker command failed with exit code 1 (use -v to see invocation)

1 个答案:

答案 0 :(得分:0)

不太确定,我没有Mac,因此无法真正测试它,但是我认为您可以将dylib文件结尾和lib放在前面,然后在-l之后使用它,就像您与其他人一样。

与此类似的事物:
g++ -g -I/Users/cjm10000/Desktop/7701X/code/include/SFML-2.4.2-osx-clang/include -L/Users/cjm10000/Desktop/7701X/code/include/SFML-2.4.2-osx-clang/lib -lsfml-graphics -lsfml-window-d -lsfml-system-d virtual_field.cpp -o virtual_field

修改

我在手册页上查找了ld的部分,该部分进行了实际的链接,并显示:

  

-l namespec
  --library = namespec

     

将namespec指定的归档文件或目标文件添加到要链接的文件列表中。此选项可以使用多次。如果   namespec的格式为:filename,ld将在库路径中搜索以下内容   一个名为filename的文件,否则它将在库路径中搜索   一个名为libnamespec.a的文件。

     

在支持共享库的系统上,ld可能还会搜索libnamespec.a以外的文件。具体来说,在ELF和SunOS上   系统,ld将在目录中搜索名为   在搜索名为libnamespec.a的文件之前,先使用libnamespec.so。 (通过   按照惯例,扩展名“ .so”表示共享库。)请注意,   此行为不适用于:filename,它始终指定一个   名为filename的文件。

因此,您似乎可以使用-l:libsfml-graphics.2.4.2.dylib格式。请注意,这来自在GNU / linux系统上运行的ld的手册页,因此他们没有提及dylib,因为它似乎是Mac专用的文件格式。