我为 ARM(具体来说是 Raspberry Pi)创建了一个交叉工具链。其库搜索顺序如下:
armv6j-hardfloat-linux-gnueabi-gcc -print-search-dirs | grep libraries | sed "s/:/\n/g"
libraries
=/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.7.2/
/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.7.2/../../../../armv6j-hardfloat-linux-gnueabi/lib/armv6j-hardfloat-linux-gnueabi/4.7.2/
/usr/lib/gcc/armv6j-hardfloat-linux-gnueabi/4.7.2/../../../../armv6j-hardfloat-linux-gnueabi/lib/
/usr/armv6j-hardfloat-linux-gnueabi/lib/armv6j-hardfloat-linux-gnueabi/4.7.2/
/usr/armv6j-hardfloat-linux-gnueabi/lib/
/usr/armv6j-hardfloat-linux-gnueabi/usr/lib/armv6j-hardfloat-linux-gnueabi/4.7.2/
/usr/armv6j-hardfloat-linux-gnueabi/usr/lib/
Run Code Online (Sandbox Code Playgroud)
我想补充一点
/usr/armv6j-hardfloat-linux-gnueabi/usr/local/lib/
Run Code Online (Sandbox Code Playgroud)
到它。据我所知,交叉编译器忽略 LIBRARY_PATH 并具有固定的搜索顺序。但是 - 是否有可能在构建时(即创建跨工具链时)更改此搜索顺序?也许有一些 gcc 的 ./configure 选项,或者环境变量?
我见过一些跨工具链,它们具有非标准(但仍然固定)的库搜索顺序。它们是通过 ./configure 选项或类似机制指定的,还是 gcc 被黑客攻击来实现的?
我想Data在矢量中保存一些结构.这些结构通过索引(而不是指针)引用其他结构,以节省内存并使序列化更容易.为了遵循这些索引,我创建了一个类DataView,它为它提供了一个舒适的界面.它看起来像这样:
#include <iostream>
#include <vector>
struct Data
{
int id_next;
int id_prev;
int value;
};
class Foo;
class DataView
{
Foo * foo;
int index;
public:
DataView( Foo * foo_, int index_ )
: foo( foo_ ), index( index_ )
{
}
DataView next() const;
DataView prev() const;
int value() const;
int & value();
int id() const
{
return index;
}
};
class Foo
{
std::vector<Data> data;
public:
friend class DataView;
DataView dataview( int index ) …Run Code Online (Sandbox Code Playgroud)