2011-03-02 6 views
0

그래서 Stanford의 CS107 과정에 대한 과제를 진행 중이며 완성되지 않은 프로그램을 컴파일 할 수 없습니다 (프로젝트 파일 및 원래 메이크 파일found on the course page, 내가 할당 4 RSS에서 일하고 있어요.)32 비트 아키텍처 용 C 프로그램 컴파일 및 연결

을 많은 연구 후에, 나는 문제가 내가 64 비트 아키텍처 (맥 OS 10.6)와 미리 컴파일 된 라이브러리 코드에 GCC를 사용하고있다 생각 assn-4-rss-news-search-lib/linux 아래는 32 비트 아키텍처 용입니다. i386과 -m36을 사용하기 위해 gcc를 설정해 보았습니다.하지만 nothings이 작동하고 있습니다. 저는 그냥 짐작하고 있습니다.

gcc -g -Wall -std=gnu99 -Wno-unused-function -c -o rss-news-search.o rss-news-search.c 
gcc rss-news-search.o -g -Wall -std=gnu99 -Wno-unused-function -g -lrssnews -L/Users/derp/Documents/OCW/CS107/Work/programming4/assn-4-rss-news-search-lib/linux -o rss-news-search 
ld: warning: in /Users/derp/Documents/OCW/CS107/Work/programming4/assn-4-rss-news-search-lib/linux/librssnews.a, file was built for unsupported file format which is not the architecture being linked (x86_64) 
Undefined symbols: 
    "_URLConnectionDispose", referenced from: 
     _ProcessFeed in rss-news-search.o 
     _ParseArticle in rss-news-search.o 
    ... several more undefined symbols mentioned ... 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make: *** [rss-news-search] Error 1 

그래서 내가 요구 해요 : 내가 아키텍처 차이가 언급되는 곳 -lnsl을 제거 할 때 다음

gcc -g -Wall -std=gnu99 -Wno-unused-function -c -o rss-news-search.o rss-news-search.c 
gcc rss-news-search.o -g -Wall -std=gnu99 -Wno-unused-function -g -lnsl -lrssnews -L/Users/derp/Documents/OCW/CS107/Work/programming4/assn-4-rss-news-search-lib/linux -o rss-news-search 
ld: library not found for -lnsl 
collect2: ld returned 1 exit status 
make: *** [rss-news-search] Error 1 

내가 얻을 출력입니다 : 내가 make 실행할 때

그래서 여기에 내가 얻을 출력입니다 이 문제를 해결하기 위해 내가 할 수있는 것에 대한 아이디어. 나는 몇 시간 동안 설정을 조정하고 아무 쓸데없는 Google을 사용하고있었습니다.

+0

당신은 C 코드 기간을 컴파일 할 수 있습니까? C에서 hello world를 작성하고 컴파일하려고합니다. 나는 OSX에서 gcc와 stdc lib에 문제가 있다는 것을 알고 있으므로 그렇게하지 않는 것이 좋다. – themaestro

+0

각각의 도구와 백엔드가 설치되어 있다면'-m32'를 사용하십시오. 하지만 여기서 문제는 오류 메시지에서 그 문제와 직접적으로 관련이없는 것처럼 보입니다 ... – 0xC0000022L

+0

그래, 실제로이 과정에서 C에서 1 톤의 코드를 작성했지만 분명히 과제 4와 6은 문제가있는 부분입니다. 일반적으로 Makefile은 제공되고 잘 작동하지만 실제 학생을 대상으로 스탠포드의 Linux/Solaris 시스템을 염두에두고 작성되었습니다. – theabraham

답변

0
  • 내가합니다 (비트 수는 작동하지 않습니다 어떤 맥 OS에서 리눅스를 위해 미리 컴파일 된 라이브러리를 사용하는 것이 아니라, 리눅스에 대한 맥 OS에서 크로스 컴파일하고 아마 가능한 실행 아마 가능하다는 것을 확신 MacOS의 호환성 상자에서 실행 가능한 Linux이지만, 사용자가하려는 것과는 아주 다른 것입니다.)

  • libnsl의이 모든 시간이 경과 한 후 나에게 대답을 찾는 것 같은 경우 사람에

+0

그건 의미가 있습니다. 이 과제를 끝내기 위해 우분투 같은 OS를 듀얼 부팅 할 것을 제안 해 주시겠습니까? – theabraham

+1

이중 부팅 또는 가상 컴퓨터. 이미 다른 하나가 설정되어 있다면 전환이 의미가 없습니다. 그렇게하지 않으면 가상 시스템에 몇 가지 이점이 있으며 이전 경험이없는 경우 가상 시스템을 설정하기가 더 이상 필요하지 않습니다. – AProgrammer

2

(이 일부 네트워크 관련 기능을 제공합니다) 리눅스의 표준 라이브러리입니다 ... 문제는 쉽게 해결된다 32bit Ubuntu의 wubi 버전을 설치합니다. 그것은 64 비트 시스템에서 잘 작동합니다. 제공된 라이브러리를 찾을 위치를 알 수 있도록 makefile 만 편집하면됩니다.

+0

블라드 미르, 그렇다면 64 비트 시스템을 사용할 수 없습니까? 12.10 우분투 x64에 있어도? Makefile에있는 .../cs107/lib 라이브러리가 없다고 확신합니다. 과제 2를 통해 알아 냈습니다. 그러나 나는이 문제에 달려 있다고 생각하지 않습니다. –

+1

제가 아는 한,이 라이브러리는 32 비트 시스템 용입니다. 그래서 그들을 사용하려면 32 비트 시스템을 갖고 싶습니다. 늦은 응답을 드려서 죄송합니다. –

관련 문제