Символы статической библиотеки не найдены даже с -l

У меня есть статическая библиотека liborc-0.4.a без общей библиотеки. У меня есть другая библиотека, libschroedinger-1.0.a (нет общего), которая зависит от символов в liborc-0.4.a. Если я запускаю nm на liborc-0.4.a, символы, такие как orc_init, отображаются как T (что означает, что они определены). Я построил libschroedinger-1.0.a с флагом командной строки -lorc-0.4, чтобы он увидел символы и был в порядке.

Однако теперь у меня есть небольшой исполняемый файл, который зависит от libschroedinger-1.0.a. Он компилируется отлично, но когда я запускаю компоновщик

gcc -lschroedinger-1.0 -lorc-0.4 -o output input.o 

Он дает такие ошибки, как:

 /usr/local/lib/libschroedinger-1.0.a(libschroedinger_1.0_la-schro.o):schro.c:(.text+0x21): undefined reference to `orc_init' 

    gcc чувствителен к порядку библиотек. Когда он компилирует liborc-0.4.a в, нет необходимости в orc_init , поэтому он не включен. Решение состоит в том, чтобы положить LDFLAGS в конец команды:

     gcc -o output input.o -lschroedinger-1.0 -lorc-0.4 

    Вы, скорее всего, скомпилировали libschroedinger с общим liborc. Статическая библиотека такая же, как куча объектных файлов в архиве, поэтому им не нужно видеть больше, чем заголовки. Напишите, например, следующее: (те же яблоки для liborc).

     gcc /path/to/libschroedinger-1.0.a /path/to/liborc-0.4.a -o output input.o