ソフト プロセッサ (PowerPC) を実行するザイリンクス FPGA があります。私は最近、PowerPC 用の Boost ライブラリをクロスコンパイルし、それをテストしたいと考えました。そこで、サンプル プログラムの 1 つを使用して、ターゲット用にクロス コンパイルを試みました。以下はコードです
#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がインストールされていないため、動的な依存関係を確認できません。しかし、ライブラリが含まれていることは確かです。続行するにはどうすればよいですか?