Прежде всего, в учебнике указываются /Library/Frameworks
, , а не ~/Library/Frameworks
. ~
указывает на домашний каталог пользователя (/Users/name/
), тогда как /
указывает на самую низкую точку в файловой системе.
Также , несмотря на документацию , /Library/Frameworks
не является стандартным каталогом фреймворка, поэтому вы должны установить его в путях поиска. Вы можете увидеть стандартные каталоги фреймворка, запустив gcc -Xlinker -v
:
@(#)PROGRAM:ld PROJECT:ld64-409.12
BUILD 17:47:51 Sep 25 2018
configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em arm64e arm64_32
Library search paths:
/usr/local/lib
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib
Framework search paths:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Обратите внимание на раздел Framework search paths
, он не включает /Library/Frameworks
.
Чтобы добавить /Library/Frameworks
к пути поиска, скомпилируйте с помощью -F/Library/Frameworks
и укажите ссылку с -F/Library/Frameworks -framework SFML -framework sfml-x
, где x равен system
, window
, graphics
, audio
или network
.
Кроме того, опция -o
указывает имя выходного файла. Ваша команда не будет принимать входные файлы и выводить исполняемый файл sfml-test.cpp
, поэтому используйте -o sfml-test sfml-test.cpp
, чтобы взять sfml-test.cpp
в качестве ввода, и выведите sfml-test
.
Ваша команда будет:
g++ -o sfml-test sfml-test.cpp -F/Library/Frameworks -framework SFML -framework sfml-window