부팅시 프로그램 실행문제
아래의 내용은 falinux.co.kr에 제가 질문 올린 글인데.. 해결을 못봐서 kldp에까지 찾게 되었습니다.
여기 분류에 맞는지.. 모르겠지만... 함 봐주시길.. 부탁드립니다..
p.s
타겟보드: ez-x5
---- 이하 질문 ----
/etc/inittab 마지막줄에 A0:12345:wait:/app/test 추가하여 실행해 본 결과
에러 메시지의 내용은 같으며
Starting pcmcia Starting PCMCIA services: cardmgr[134]: watching 2 sockets
Starting INET services: inetd
/app/test error while loading shared librayies: libpthread.so.0: cannot open shared object file: No such file or directory.
와 같이 출력됩니다. 이 메시지로 봐서 무선 링크는 잡힌것같은데.. 혹 부팅시 libpthread.so.0의 경로가 export가 되지 않아서 생기는 문제는 아닐까요?
그리고 제가 부팅시 데몬 프로그램은 실행되게끔 해 보아도 똑 같은 에러문제를 보이고 있습니다.
데몬프로그램으로 무선랜의 접속상태 확인을 어떻게 하는지 잘몰라서.. 부팅되면 바로 실행되게끔 했는데.. 정말..이문제 답답하기 그지없군요..
----
방금.. 딜레이를 주어 부팅 완료후 프로그램 실행시켜도 같은 에러를 출력하는 것으로 보아 path 문제 인것 같은데요.. path를 어디에다 설정해주면 될까요..? /usr/lib/...
이제 path 문제도 아닌 것 같군요..ㅠ.ㅠ
>안녕하세요..
>
>라이브러리 파일을 읽어오기 전에 프로그램이 실행되는것 같습니다..
>
>rc.local 에서 실행을 하지 마시고, etc/inittab 파일에서 실행을 해 보시기 바랍니다.
>
>맨 마지막 줄에..
>A0:12345:wait:/app/test
>
>
>만일 위와 같이 하였는데도 같은 증상이면 스크립트 파일 또는 데몬 프로그램을 작성하셨어 무선랜의
>접속 상태를 확인 하셨어 접속 상태가 되면 /app/test 프로그램이 실행되도록 하셔야 할 것 같습니다.
>
>그럼 수고하세요.
>
>
>
>
>
>>
>>멀티쓰레드와 소켓프로그래밍을 이용한 프로그램을 작성하였습니다. 소스에 대한 문제가 아니라..
>>
>>이 응용프로그램을 보드에서 실행하면 잘 수행되고. 부팅시 자동으로 실행되게끔 rc.local 파일에다 명령을 적어두면 libpthread.so.0 관련 에러가 뜹니다. 에러 메시지는 다음과 같습니다.
>>
>> .
>> .
>> .
>>
>>INIT: version 2.84 booting
>>EXT2-fs warning: mouting unchecked fs, running e2fsck is recommended
>>
>>INIT: Entering runlevel: 3
>>yaffs: dev is 7938 name is "1f:02"
>>
>>SIOCADDRT: Network is unreachable
>>/app/test error while loading shared librayies: libpthread.so.0: cannot open shared object file: No such file or directory.
>>Starting system logger: syslogd
>>Starting pcmcia Starting PCMCIA services: cardmgr[134]: watching 2 sockets
>>
>>Starting INET services: inetd
>>
>> .
>> .
>> .
>>
>>부팅 완료후 로그인하여 그 작성한 파일을 실행하면 이상없이 잘 돌아갑니다. 왜 부팅때는 프로그램이 실행이 안되는지 모르겠군요. 아마 pcmcia 무선 랜하고 관련이 있나..생각됩니다.
>>
>>해결방법이 있을까요?
>
1. /etc/ld.so.conf 에
1. /etc/ld.so.conf 에 libpthread.so.0 가 있는 곳의 경로를 추가한다.
2. /etc/profile 정도를 찾아서 libpthread.so.0 가 있는 곳의 경로를 LD_LIBRARY_PATH 에 추가한다.
3. LD_LIBRARY_PATH=/some/where:$LD_LIBRARY_PATH /app/test 처럼 실행시킨다.
입맛에 맞는 것으로 아무거나 고르세요.
1번은 시스템 전체에 골고루 영향을 끼치게되고(/lib/ld-*.so),
2번은 shell 을 통해 실행되는 모든 프로그램에 영향을 끼치게 되고(/sbin/sh),
3번은 해당 프로그램에게만 영향을 줍니다.
inittab 에 등록하는 것은... respawn 을 활용할 때 빼고는 비추입니다.
그나저나 libpthread.so.0 가 도대체 어디에 있기에 ?
노파심에 몇 줄 덧붙입니다.
혹시 libpthread.so.0 가 다른 파티션에 있다면, 당연히 그 파티션을 마운트한 다음에 실행되도록 해야 합니다.
OTL
아.. 벌써 답글이
아.. 벌써 답글이 올라왔군요.
이거땜에 이틀을 삽질했는데.. 질문을 올리고 이것저것하다보니까 해결이 됐는데 윗분의 말씀대로 lib 경로가 잘못 설정되어있더군요.
그래서 수정하니까 한방에 해결되는 문제를 지금껏 끙끙 됐네요.
여튼.
항목별로 번호를 매겨가며 관심을 쏟아주신 분께 감사의 말을 드리며 고맙게 생각합니다.
댓글 달기