도와주세요!!
글 수 15,339
2006.04.04 10:19:17 (*.49.88.26)
7572
안녕하세요..
어떤 라이브러리를 참조하는지는 어플리케이션을 포팅하신 님이 알고 있어야 합니다.
저희가 박헌권님께서 어떤 어플리케이션을 사용하여셨는지, 이 어플리케이션이 어떤 라이브러리를 참조했는지는 모릅니다.
일단 확인하는 방법은 다음과 같습니다..
우선 i386용 ( gcc ) 컴파일을 하셨어 다음과 같은 명령으로 라이브러리 참조를 확인 하세요..
# ldd 어플리케이션 실행 파일
[root@arm26 bin]# ldd gzip
libc.so.6 => /lib/tls/libc.so.6 (0x00445000)
/lib/ld-linux.so.2 (0x00428000)
[root@arm26 bin]#
arm용으로 컴파일 된것을 하시면 다음과 같은 문구만 나옵니다...
[root@arm26 v01]# ldd app_gpio
not a dynamic executable
따라서 일반 GCC로 컴파일 하셨어 먼저 참조한 라이브러리를 확인 하시고, 이 라이브러리들 중 타겟보드에
/lib 디렉토리 또는 /usr/lib 디렉토리에 라이브러리가 존재하는지 확인, 만약 없다면 해당 라이브러리를 arm용으로 컴파일 하셨어 타겟보드에 넣으시면 됩니다.
그럼 수고하세요..
># file 실행파일
>
> : ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.19, dynamically linked (uses shared libs), not stripped
>
>라고 확인 되는데.. arm-linux-gcc로 컴파일했으니 정상인듯한데요?
>
>
>그런데 target 에서 파일실행할때 어떤 공유라이브러리가 로딩되어야 하는지 안나오네요??
>
>어떤 공유 라이브러리?? 인가요?
>
>
>문제의 라이브러리를 찾아서 컴파일후 오브젝트 파일을 램디스크 /lib에 넣어주고
>
>램디스크 다시 적재 후 실행파일을 다운받아서
>
>실행한다.. 순서가 맞나요?
>
>
>
>
>>안녕하세요..
>>
>>공유라이브러리는 해당 라이브러리를 타겟보드의 /lib 디렉토리에 복사하시면 됩니다.
>>automake 를 사용해 보지 않았어 잘모르겠지만 이것을 사용하면 arm용으로 컴파일이 되나요???
>>
>>어플리케이션의 실행 파일을 다음과 같이 해 보세요.
>>
>># file 어플리케이션
>>
>>ELF 32-bit LSB executable, Advanced RISC Machines ARM, version 1, dynamically linked (uses shared libs), not stripped
>>
>>라는 문장이 나오면 정상입니다.
>>
>>그리고 공유라이브러리가 없다면 해당 공유라이브러리를 arm용으로 컴파일이 하셨어 타겟보드의 /lib 디렉토리에 복사하셔야 합니다.
>>
>>
>>그럼 수고하세요.
>>
>>
>>>
>>>
>>>error while loading shared libraries : cannot open shared object file: cannot load shared object file: No such file or directory
>>>
>>>레드헷9에서 automake를 이용해서 컴파일 해서 타깃보드에 올리고 실행하니까
>>>
>>>이런 메세지가 나오네요..
>>>
>>>
>>>공유라이브러리를 넣어줘야 하는거 같은데 어떡게 해야 하나요???
>>>
>>
>
어떤 라이브러리를 참조하는지는 어플리케이션을 포팅하신 님이 알고 있어야 합니다.
저희가 박헌권님께서 어떤 어플리케이션을 사용하여셨는지, 이 어플리케이션이 어떤 라이브러리를 참조했는지는 모릅니다.
일단 확인하는 방법은 다음과 같습니다..
우선 i386용 ( gcc ) 컴파일을 하셨어 다음과 같은 명령으로 라이브러리 참조를 확인 하세요..
# ldd 어플리케이션 실행 파일
[root@arm26 bin]# ldd gzip
libc.so.6 => /lib/tls/libc.so.6 (0x00445000)
/lib/ld-linux.so.2 (0x00428000)
[root@arm26 bin]#
arm용으로 컴파일 된것을 하시면 다음과 같은 문구만 나옵니다...
[root@arm26 v01]# ldd app_gpio
not a dynamic executable
따라서 일반 GCC로 컴파일 하셨어 먼저 참조한 라이브러리를 확인 하시고, 이 라이브러리들 중 타겟보드에
/lib 디렉토리 또는 /usr/lib 디렉토리에 라이브러리가 존재하는지 확인, 만약 없다면 해당 라이브러리를 arm용으로 컴파일 하셨어 타겟보드에 넣으시면 됩니다.
그럼 수고하세요..
># file 실행파일
>
> : ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.19, dynamically linked (uses shared libs), not stripped
>
>라고 확인 되는데.. arm-linux-gcc로 컴파일했으니 정상인듯한데요?
>
>
>그런데 target 에서 파일실행할때 어떤 공유라이브러리가 로딩되어야 하는지 안나오네요??
>
>어떤 공유 라이브러리?? 인가요?
>
>
>문제의 라이브러리를 찾아서 컴파일후 오브젝트 파일을 램디스크 /lib에 넣어주고
>
>램디스크 다시 적재 후 실행파일을 다운받아서
>
>실행한다.. 순서가 맞나요?
>
>
>
>
>>안녕하세요..
>>
>>공유라이브러리는 해당 라이브러리를 타겟보드의 /lib 디렉토리에 복사하시면 됩니다.
>>automake 를 사용해 보지 않았어 잘모르겠지만 이것을 사용하면 arm용으로 컴파일이 되나요???
>>
>>어플리케이션의 실행 파일을 다음과 같이 해 보세요.
>>
>># file 어플리케이션
>>
>>ELF 32-bit LSB executable, Advanced RISC Machines ARM, version 1, dynamically linked (uses shared libs), not stripped
>>
>>라는 문장이 나오면 정상입니다.
>>
>>그리고 공유라이브러리가 없다면 해당 공유라이브러리를 arm용으로 컴파일이 하셨어 타겟보드의 /lib 디렉토리에 복사하셔야 합니다.
>>
>>
>>그럼 수고하세요.
>>
>>
>>>
>>>
>>>error while loading shared libraries : cannot open shared object file: cannot load shared object file: No such file or directory
>>>
>>>레드헷9에서 automake를 이용해서 컴파일 해서 타깃보드에 올리고 실행하니까
>>>
>>>이런 메세지가 나오네요..
>>>
>>>
>>>공유라이브러리를 넣어줘야 하는거 같은데 어떡게 해야 하나요???
>>>
>>
>
NEEDED libc.so.6
과 같이 app_gpio에서 사용하고 있는 라이브러리를 알 수 있습니다.
이렇게 사용하고 있는 라이브러리를 알고 해당 라이브러리를 타겟보드에 카피해주면 됩니다~~
그럼 숙.