2013-04-16 58 views
0

我有一個運行軟處理器(PowerPC)的Xilinx FPGA。我最近爲PowerPC交叉編譯Boost庫並想測試它。所以我使用了一個示例程序,並試圖爲我的目標進行交叉編譯。下面是代碼在linux/powerpc上動態鏈接失敗

#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/ 

但即使如此,我也遇到了同樣的問題。

下面是我沒有LDD安裝在我的目標,所以我不能檢查動態依賴UNAME -ars

Linux (none) 3.0.0-14.1-build3+ #23 PREEMPT Thu Jan 3 18:44:27 CST 2013 ppc GNU/Linux 

的輸出。但我相信,圖書館是包括在內的。我該如何繼續?

回答

1

即使我的嵌入式Linux系統有一個動態鏈接器,它不起作用。當我使用我的工具鏈提供的動態鏈接器並將其替換爲正確的目錄時,問題就解決了。現在動態鏈接很好。