Двоичный файл, который не имеет динамически загружаемых библиотек, не может быть собран под OSX. Я пробовал как apple llvm-gcc, так и macports gcc. Тем не менее, пока нет ответа, что это не нужно. Вы можете связать библиотеку c / c ++ статически (и жить с какой-то динамической частью).
Файл hello.cpp:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!";
}
Компилировать как обычно:
g++ hello.cpp -o hello
Проверить связь:
otool -L hello
hello:
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
Мы не можем избавиться от зависимости libSystem.B.dylib, но с помощью macports gcc мы можем сделать это:
g++-mp-4.6 -static-libgcc -static-libstdc++ hello.cpp -o hello
otool -L hello
hello:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
Видимо, просто Apple не поддерживает статические ссылки:
llvm-g++ -static-libgcc -static-libstdc++ hello.cpp -o hello
otool -L hello
hello:
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)