안녕하세요~
음 크로스 컴파일러 버전이 어떻게 되는지요~
음 제가 생각 하기론 램디스크에 구성된 libc 버전과 ...
크로스 컴파일러의 libc 의 버전이 서로 달라서 그런것으로 알고 있습니다 .
요게 그냥 일반 라이브러리 같으면 그냥 그 라이브러리만 카피 해주면 되겠지
만 ... libc 는 그렇게 할수가 없더군요~
램디스크를 새로운 libc 에 맞춰서 새로 구성을 하던지 (단순히 카피 하는게
아님 램디스크 시스템 전체를 하나하나 구해서 컴파일 하고 등등 엄청난 삽질)
아니면 크로스 컴파일러를 램디스크 이미지에 맞춰 다운 그래이드를 하던지
해야 합니다. ㅠ.ㅠ
무지 슬픈 일이지요~

그래서 저두 아랫글처럼 .. 왜 FALINUX 측에서 램디스크와 크로스 컴파일러의
버전을 서로 상이하게 올리셨는지 질문을 한것이구요~

암튼 건투를 빕니다. 그럼

성낙소 wrote..
: 안녕하세요.프로세스간 통신 테스트를 하는데 I386에서는
: 잘 되는데 EZM01에서는 에러가 발생 합니다.
: 바쁘시지만 한번 봐 주십시오.
: [root@ezboard nfs]
: $ ./msg1
: ./msg1: /lib/libc.so.6: version `GLIBC_2.2' not found
: (required by ./msg1)
: [root@ezboard nfs]$
: 수고 하세요
: //msg1.c /////////////////////////////////////////////////////
: /* Here's the receiver program. */
:
: #include
: #include
: #include
: #include
: #include
:
: #include
: #include
: #include
:
:
: struct my_msg_st {
: long int my_msg_type;
: char some_text[BUFSIZ];
: };
:
: int main()
: {
: int running = 1;
: int msgid;
: struct my_msg_st some_data;
: long int msg_to_receive = 0;
:
: /* First, we set up the message queue. */
:
: msgid = msgget((key_t)1234, 0666 | IPC_CREAT);
:
: if (msgid == -1) {
: fprintf(stderr, "msgget failed with error: %d
",
: errno);
: exit(EXIT_FAILURE);
: }
:
: /* Then the messages are retrieved from the queue, until an
: end message is encountered.
: Lastly, the message queue is deleted. */
:
: while(running) {
: if (msgrcv(msgid, (void *)&some_data, BUFSIZ,
: msg_to_receive, 0) == -1) {
: fprintf(stderr, "msgrcv failed with error: %d
",
: errno);
: exit(EXIT_FAILURE);
: }
: printf("You wrote: %s", some_data.some_text);
: if (strncmp(some_data.some_text, "end", 3) == 0) {
: running = 0;
: }
: }
:
: //이 부분을 막으면 동작>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
: if (msgctl(msgid, IPC_RMID, 0) == -1) {
: fprintf(stderr, "msgctl(IPC_RMID) failed
");
: exit(EXIT_FAILURE);
: }
: //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
: exit(EXIT_SUCCESS);
: }
:
:
: //msg2.c /////////////////////////////////////////////////////
: /* The sender program is very similar to msg1.c. In the main
: set up, delete the
: msg_to_receive declaration and replace it with buffer
: [BUFSIZ], remove the message
: queue delete and make the following changes to the running
: loop.
: We now have a call to msgsnd to send the entered text to the
: queue. */
:
: #include
: #include
: #include
: #include
: #include
:
: #include
: #include
: #include
:
: #define MAX_TEXT 512
:
: struct my_msg_st {
: long int my_msg_type;
: char some_text[MAX_TEXT];
: };
:
: int main()
: {
: int running = 1;
: struct my_msg_st some_data;
: int msgid;
: char buffer[BUFSIZ];
:
: msgid = msgget((key_t)1234, 0666 | IPC_CREAT);
:
: if (msgid == -1) {
: fprintf(stderr, "msgget failed with error: %d
",
: errno);
: exit(EXIT_FAILURE);
: }
:
: while(running) {
: printf("Enter some text: ");
: fgets(buffer, BUFSIZ, stdin);
: some_data.my_msg_type = 1;
: strcpy(some_data.some_text, buffer);
:
: if (msgsnd(msgid, (void *)&some_data, MAX_TEXT, 0) == -
: 1) {
: fprintf(stderr, "msgsnd failed
");
: exit(EXIT_FAILURE);
: }
: if (strncmp(buffer, "end", 3) == 0) {
: running = 0;
: }
: }
:
: exit(EXIT_SUCCESS);
: }