Подтвердить что ты не робот

Как я могу принудительно связывать статическую библиотеку, когда присутствует общая библиотека с таким же именем

Предположим, у меня есть файл main.cpp, который использует функцию sin(), которая определена в libmath. Также предположим, что у нас есть как libmath.a, так и libmath.so, доступные в том же каталоге. Теперь, если я выдаю команду g++ -o main main.cpp -lmath, поведение Linux по умолчанию - это ссылка на общую библиотеку libmath.so. Я хочу знать, есть ли способ заставить программу связываться со статической библиотекой libmath.a без удаления или перемещения общей библиотеки?

4b9b3361

Ответ 1

Вам нужно передать -статик в компоновщик, но только для конкретных библиотек, которые вы хотите. например:.

g++ -o main main.cpp -Wl,-Bstatic -lmath -Wl,-Bdynamic

Ответ 2

Если ваш компоновщик поддерживает -l:<filename>, вы можете использовать:

g++ -o main main.cpp -l:libmath.a

Ответ 3

Используйте эту функцию:

g++ -o main main.cpp /path_to/libmath.a