动态链接在linux / powerpc上失败

时间:2013-04-16 19:34:59

标签: linux boost dynamic-linking powerpc

我有一台运行软处理器(PowerPC)的Xilinx FPGA。我最近为PowerPC交叉编译了Boost库,并想测试它。所以我使用了一个示例程序并试图为我的目标交叉编译它。以下是代码

#include <boost/thread/thread.hpp>

void helloworld()
{
   printf( "Hello World!");
}

int main()
{
    boost::thread thrd(&helloworld);
    thrd.join();
}

以下是我的make文件

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,因此我无法检查动态依赖项。但我相信,包括库。我该怎么办?

1 个答案:

答案 0 :(得分:1)

即使我的嵌入式Linux系统有一个动态链接器,它也无法正常工作。当我使用随工具链提供的动态链接器并将其替换为正确的目录时,问题得以解决。现在动态链接很好。

相关问题