компиляция SFML с помощью компилятора g ++ через терминал - PullRequest
0 голосов
/ 26 сентября 2018

вот что я набрал в терминале:

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 голосов
/ 26 сентября 2018

Не совсем уверен, и у меня нет 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

Edit

Я посмотрел вверхраздел на странице справочника для ld, который выполняет фактическое связывание и говорит:

-l namespec
--library = namespec

Добавить архив или объектфайл, указанный в namespec для списка файлов для ссылки.Эта опция может использоваться любое количество раз.Если namespec имеет форму: filename, ld будет искать путь к библиотеке для файла с именем filename, в противном случае он будет искать путь к библиотеке для файла с именем libnamespec.a.

В системах, которые поддерживают общие библиотеки, ldможет также искать файлы, отличные от libnamespec.a.В частности, в системах ELF и SunOS ld будет искать в каталоге библиотеку libnamespec.so, прежде чем искать библиотеку libnamespec.a.(По соглашению расширение «.so» указывает на разделяемую библиотеку.) Обратите внимание, что это поведение не относится к: filename, который всегда указывает файл с именем filename.

Таким образом, вы могли использоватьформат -l:libsfml-graphics.2.4.2.dylib похоже.Обратите внимание, что это из справочной страницы ld, работающей в системе GNU / linux, поэтому они не упоминают dylib, так как это, кажется, специфический формат файлов Mac.

...