gpt4 book ai didi

c++ - 交叉构建,链接问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:24 26 4
gpt4 key购买 nike

我必须构建一个在机顶盒上运行的小程序,为此我使用特定的构建工具链:toolchain-final-mipsisa32r2el-timesys-linux-gnu

构建由两部分组成:一个 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

如果我在 libSTB.a 上运行 nm,我会看到 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'

知道我在哪里犯了错误或如何调查吗?

最佳答案

正如@H2CO3 和@Joe Z 所解释的,问题出在参数顺序上。使用 -l 设置的附加静态库必须放在 .c 文件之后。如以下示例所示,最后两个参数的切换解决了问题。

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
../../../Source/STBLib/STBExample.c -lSTB

关于c++ - 交叉构建,链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20758287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com