связывание статической библиотеки вместо динамической - PullRequest
2 голосов
/ 06 декабря 2011

У меня есть каталог с именем FOO, в котором есть X.a и X.so. Я хочу выбрать только X.a. Поэтому в моем make-файле я использую следующее, чтобы связать его

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ $< -static -lX

Но когда я это делаю, я получаю следующую ошибку

/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc

Как это должно быть сделано правильно. Один из способов - дать путь пресса X.a. Есть ли другой способ?

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

Попробуйте это:

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ $< -Wl,-Bstatic -lX -Wl,-Bdynamic
0 голосов
/ 07 декабря 2011

Если я правильно читаю документацию для ld, вам не нужно указывать абсолютный путь, но вы можете указать библиотеку, используя ее полное имя как таковое:

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ $< -l:X.a
...