Я должен построить небольшую программу для запуска на приставке, и для этого я использую конкретный сборки набора инструментов: Набор инструментов финала-mipsisa32r2el-TimeSys-Linux-гнуКросс-сборка, выпуск ссылка
Строка состоит из двух частей: одного файла lib static .a и исполняемого файла, который использует библиотеку.
Либерал правильно построить с помощью следующей опции:
mipsisa32r2el-timesys-linux-gnu-gcc -c --param max-inline-insns-single=2400
-o ../../../build/LinuxHost_STB_release/_outLib/STB.o -O2 -fno-strict-aliasing
-Winline -Wall -I../../../Modules -I../../../Source
-I/opt/toolchains/toolchain-final-mipsisa32r2el-timesys-linux-gnu/include
-I -fno-rtti ../../../Source/STBLib/STB.cpp
если я бегу nm
на libSTB.a, я увидел, что функция определения в STB.cpp как:
0000000000000124 T STB_Create
0000000000000460 T STB_Destroy
Для компилировать и связывать исполняемый файл, я использую следующую командную строку:
mipsisa32r2el-timesys-linux-gnu-c++ -o ../../../build/LinuxHost_STB_release/STBExample
--sysroot=/opt/toolchains/toolchain-final-mipsisa32r2el-timesys-linux-gnu/
-I/opt/toolchains/toolchain-final-mipsisa32r2el-timesys-linux-gnu/include
-L../../../build/LinuxHost_STB_release
-lSTB ../../../Source/STBLib/STBExample.c
Но я получаю следующая ошибка компоновщика:
STBExample.c:(.text+0x488): undefined reference to `STB_Create'
Любая идея, где я совершил ошибку или о том, как ее расследовать?
Переверните аргументы '-lSTB' и' ../../../ Source/STBLib/STBExample.c'. –
Эхо, что сказал @ H2CO3. Обычно аргументы библиотеки продолжаются, особенно со статическими библиотеками. –
Фактически он меняет выход компоновщика, по крайней мере теперь я получил ошибку «неопределенная ссылка», но для внутренних данных и функций, еще не включенных в список файлов. Благодарю. – alexbuisson