使用Hexagon DSP工具链

时间:2016-08-30 13:13:31

标签: linker-errors multiple-definition-error hexagon-dsp

我正在尝试使用Qualcomm Hexagon工具链为Hexagon目标构建/交叉编译一些C代码。我使用argtable3。我的应用程序中需要的命令行解析库。

构建为argtable3库和Hexagon工具链libc.a中存在的某些函数提供了多个定义链接器错误。下面给出的错误。

我如何解决这个问题,因为我无法删除argtable,也没有删除libc.a的链接作为我的目标体系结构,并且删除它可能会引发其他错误。

错误:文件中的符号“ getopt ”的多个定义../../lib/libargtable.a(argtable3.c.o)和 /home/HEXAGON_Tools/7.2.12/Tools/bin /../目标/六边形/ LIB / V60 /的的libc.a (getopt.o)

错误:文件中的符号“ opterr ”的多个定义../../lib/libargtable.a(argtable3.co)和/ home / HEXAGON_Tools / 7.2.12 /工具/仓/../目标/六边形/ LIB / V60 /的的libc.a (getopt.o)

错误:文件中的符号“ optind ”的多个定义../../lib/libargtable.a(argtable3.co)和/ home / HEXAGON_Tools / 7.2.12 /工具/仓/../目标/六边形/ LIB / V60 /的的libc.a (getopt.o)

错误:文件中的符号“ optopt ”的多重定义../../lib/libargtable.a(argtable3.co)和/ home / HEXAGON_Tools / 7.2.12 / Tools / bin /../ target / hexagon / lib / v60 / libc.a (getopt.o)

2 个答案:

答案 0 :(得分:2)

万一你仍然遇到这个问题,请注意检查你的编译器命令是什么?我认为最好的方法是在argtable3.c代码中修改这些区域,如:

ifdef REPLACE_GETOPT

/ *  * getopt -  *解析argc / argv参数向量。  *  * [最终这将取代BSD getopt]  * / INT getopt(int nargc,char * const * nargv,const char * options) {

类似的出现: https://github.com/argtable/argtable3/blob/master/argtable3.c

答案 1 :(得分:0)

如果您启用_WIN32,请在本地定义optreset,并将_vsnprintf()的号召更改为vsnprintf()中的warnx(),它应该有效。

Example working commit,使用截至2017年5月的当前Hexagon SDK进行测试。