我有一个运行软处理器 (PowerPC) 的 Xilinx FPGA。我最近为 PowerPC 交叉编译了 Boost 库并想对其进行测试。所以我使用了其中一个示例程序并尝试为我的目标交叉编译它。下面是代码
#include <boost/thread/thread.hpp>
void helloworld()
{
printf( "Hello World!");
}
int main()
{
boost::thread thrd(&helloworld);
thrd.join();
}
下面是我的制作文件
CPP=ppc_4xx-g++
CFLAGS=-c -g -Wall
LDFLAGS_PowerPC=-L/shared/deps/powerpc/lib -L/opt/ELDK/4.2/ppc_4xx/lib/
LIBS_PowerPC=-lboost_thread -lboost_system -lpthread -lrt
INCLUDES=-I. -I./4.2.2/ -I./include -I/opt/ELDK/4.2/ppc_4xx/usr/include/
CPPFLAGS_PowerPC=-I/shared/deps/common/include
CPPFLAGS_COMMON=-I/shared/deps/powerpc/include
CPPFLAGS=$(CPPFLAGS_COMMON) $(CPPFLAGS_PowerPC)
all: helloworld
helloworld: helloworld.o
$(CPP) $(LDFLAGS_PowerPC) $(LIBS_PowerPC) helloworld.o -o helloworld
helloworld.o: helloworld.cpp
$(CPP) $(CFLAGS) $(CPPFLAGS) $(INCLUDES) helloworld.cpp
clean:
rm -rf *.o helloWorld
我能够生成二进制文件,但是当我在目标上运行程序时出现以下错误
-/bin/sh: ./helloworld: not found
我在网上查了一下,发现上面的问题是在我们有动态链接的时候出现的。我的 Boost 库位于/shared/deps/powerpc/lib位置,我已使用以下命令相应地设置了变量LD_LIBRARY_PATH 。
export LD_LIBRARY_PATH=/shared/deps/powerpc/lib/:/opt/ELDK/4.2/ppc_4xx/lib/
但即便如此,我也会遇到同样的问题。
下面是 uname -ars 的输出
Linux (none) 3.0.0-14.1-build3+ #23 PREEMPT Thu Jan 3 18:44:27 CST 2013 ppc GNU/Linux
我的目标上没有安装 ldd,所以我无法检查动态依赖项。但我确信,图书馆也包括在内。我该如何进行?