С gcc можно ли связать библиотеку, но только если она существует? - PullRequest
0 голосов
/ 31 октября 2018

У нас немного испорчена система make-файлов, которую мы собираемся исправить. Но в то же время мне нужно добавить обходной путь, и я забочусь, если вы можете попросить компилятор (или компоновщик) связать библиотеку, но только если она существует. Я знаю, как исправить make-файл, но это займет некоторое время, а пока я хочу быстро взломать ...

Итак, у меня есть что-то вроде:

gcc <...other options...> -L ./some/path -l somelibrary

Когда libsomelibrary.so не существует, это выдает ошибку. Я хочу продолжить в этом случае без ссылки. Это возможно? - какой-нибудь вариант компоновщика?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Вы можете заменить

gcc <...other options...> -L ./some/path -l somelibrary

в Makefile с

gcc <...other options...> -L ./some/path -l somelibrary || gcc <...other options...> -Wl,--unresolved-symbols=ignore-in-object-files

В качестве примечания вместо -L ./some/path -l somelibrary вы можете просто сделать ./some/path/libsomelibrary.so.

0 голосов
/ 31 октября 2018

Программа make реагирует на возвращаемое значение вызванной программы (в данном случае gcc). Если он возвращает 0, то это успешно. Все остальные значения считаются ошибочными. Таким образом, вы можете просто вызвать bash-скрипт, выполняющий компоновку как промежуточное решение. Просто позвольте bash-скрипту вернуть 0 в любом случае.

...