Статическая линковка libc ++ clang - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь статически связать стандартную библиотеку libc ++ (https://libcxx.llvm.org/) в Linux (Arch использует эту AUR https://aur.archlinux.org/packages/libc%2B%2B/), используя Clang.

Я получаю ошибку /usr/bin/ld: cannot find -lc++

Ошибка не зависит от кода, она появляется даже в «Hello World».

Если я удаляю опцию -static, она компилируется (и связывается), и сгенерированный исполняемый файл работает.

Я не хочу использовать libstdc ++ (у меня есть причины не фокусироваться на этом обсуждении), и ссылки должны быть статичными (это требование).

Я прекрасно осведомленчто это сложно отладить, не имея доступа к машине, где это происходит. Однако бывает, что это две разные машины (обе с Arch), поэтому, может быть, я об этом забываю.

Что я пробовалпока здесь объясняется (https://releases.llvm.org/7.0.0/projects/libcxx/docs/UsingLibcxx.html)

Основная команда, которая должна работать, это следующая clang++ -static -stdlib=libc++ -std=c++17 main.cpp -lc++abi

1 Ответ

0 голосов
/ 14 декабря 2018

Это будет связано с тем, что в вашей системе не установлена ​​статическая libc++ (т.е. libc++.a).По умолчанию Archlinux не устанавливает статические библиотеки 5 лет назад , поэтому вам будет сложно выполнить полностью статические связи.Вам придется делать свои собственные статические сборки всех зависимых библиотек, рекурсивно.

...