首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tilera交叉编译-链接错误

Tilera交叉编译-链接错误
EN

Stack Overflow用户
提问于 2010-11-17 16:44:27
回答 3查看 527关注 0票数 0

我试图交叉编译Tilera的源代码,但在链接时得到以下错误。所有这些错误都与C++标准模板库有关。

STL库的链接过程有什么区别吗?

错误包括:

代码语言:javascript
复制
gtpu_t. a: In function `stlp_std::_Atomic_swap_struct<0>::_S_swap(unsigned int volatile* , unsigned int)':
91 /u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads.h :588: undefined reference to `stlp_std::_Atomic_swap_struct<0>::_S_swap_lock'
92 /u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads.h :588: undefined reference to `stlp_std::_Atomic_swap_struct<0>::_S_swap_lock'
93 /u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads.h :591: undefined reference to `stlp_std::_Atomic_swap_struct<0>::_S_swap_lock'
94 /u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads.h :591: undefined reference to `stlp_std::_Atomic_swap_struct<0>::_S_swap_lock'
95 /u/TILERA/LTESTACK/TILERA/DEV/lte/lte_enb/enb_app/../enb_gtpu/gtpu_t/lib/gtpu_t. a: In function `stlp_std::_Atomic_swap_struct<0>::_S_swap_ptr(void* volatile*, v oid*)':
96 /u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads.h :614: undefined reference to `stlp_std::_Atomic_swap_struct<0>::_S_swap_lock'
97 /u/TILERA/LTESTACK/TILERA/DEV/lte/lte_enb/enb_app/../enb_gtpu/gtpu_t/lib/gtpu_t. a:/u/TILERA/TileraMDE-2.1.1.107611/tilepro/tile/usr/include/cpp/stl/stl/_threads .h:614: more undefined references to `stlp_std::_Atomic_swap_struct<0>::_S_swap_ lock' follow 
EN

回答 3

Stack Overflow用户

发布于 2011-03-16 02:25:51

我想这会有帮助的。我以前试过用Tilera编译,得到类似的错误,“未定义的引用到”。解决方案是将库包含在项目属性中。

单击您的项目设置,转到路径和符号,并在库下包含定义stlp_std::_Atomic_swap_struct<0>::_S_swap_lock的库。

还要注意的是,Tilera IDE (eclipse)是愚蠢的。定义Tile库的路径将不起作用!只需输入库的名称即可。(假设您正确设置了IDE变量)。如果使用命令行,只需添加参数即可包含该库

-lMyLibrary

下面是一个示例:

在库下面有:

代码语言:javascript
复制
tmc
pthread

我假设您是在Linux下开发的。

票数 1
EN

Stack Overflow用户

发布于 2010-11-17 17:39:46

"STL“只是C++实现的一部分。它不应该被特别链接,就像你不需要特别链接mallocnew一样。

票数 0
EN

Stack Overflow用户

发布于 2010-11-17 22:15:10

如果我编译一个使用的小程序,它使用_S_swap_lock,它对我来说是有效的:

代码语言:javascript
复制
$ cat foo.cc
#include <rope>
int main(void)
{
  std::crope r(100000, 'x');
  std::crope r2 = r + "abc";
}
$ tile-c++ foo.cc
$ nm -C a.out | grep -i atomic
0000000000059028 V stlp_std::_Atomic_swap_struct<1>::_S_swap_lock

这是32位原子的"<1>“风格,似乎很常用。我在libsupc++.a中看不到<0>的味道。我怀疑你需要发布一些重现问题的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4202769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档