У меня установлен gcc
8.1.0 через homebrew на macOS 10.13.4.Я также установил sfml
2.4.2_1 через homebrew.Когда я компилирую этот файл:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode().getDesktopMode(), "My Window");
while (window.isOpen())
{
sf::Event event;
while(window.pollEvent(event))
{
window.clear();
if (event.type == sf::Event::Closed)
{
window.close();
}
}
}
return 0;
}
с g++-8 sfmltest.cpp -o sfmltest -lsfml-system -lsfml-graphics -lsfml-window -lsfml-audio -lsfml-network
я получаю неопределенную ссылку на sf :: String:
Undefined symbols for architecture x86_64:
"sf::String::String(char const*, std::locale const&)", referenced from:
_main in cciQ649w.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
Я понимаю, что не долженне нужны все эти библиотеки.Я включил их в надежде избавиться от ошибки неопределенных символов.Если я компилирую один и тот же файл с теми же библиотеками, используя clang++
, все компилируется просто отлично.
Я предполагаю, что homebrew использует clang
для компиляции и установки sfml
и что созданный abi несовместим с gcc
.Кто-нибудь может это подтвердить?Это то, что я могу исправить?Для меня не проблема использовать clang++
.Я бы предпочел использовать g++
только потому, что хочу.