2013-04-16 1 views
0

나는 소프트 프로세서 (PowerPC)를 실행하는 자일링스 FPGA를 가지고있다. 나는 최근에 PowerPC 용 Boost 라이브러리를 컴파일하여 테스트 해 보려고했다. 그래서 나는 샘플 프로그램 중 하나를 사용하여 목표를 위해 컴파일을 시도했다. 다음은 코드 아래linux/powerpc에서의 동적 연결 실패

#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 

온라인으로 확인한 결과 동적 링크가있을 때 위의 문제가 발견되었습니다. 내 부스트 라이브러리는 /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

임베디드 리눅스 시스템에 동적 링커가 있어도 작동하지 않습니다. 도구 체인과 함께 제공되는 동적 링커를 사용하여 올바른 디렉토리로 바꿨을 때 문제가 해결되었습니다. 이제 동적 연결이 좋습니다.