这是我在终端中输入的内容:
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)
答案 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专用的文件格式。