2012-08-01 65 views
4

我正在使用Fedora(laughlin)。我在這個發行版中用c和java編寫了很多程序。 所以我決定在linux中嘗試一些Objective-C編程。我在互聯網上搜索了很多頁面,最終找到了一個。objective-c編譯錯誤

http://www.techotopia.com/index.php/Building_and_Installing_GNUstep_on_Linux

我就按照這個網頁上給出的安裝GNUstep的說明。

安裝過程中一切順利。但寫一個小塊的代碼,並使用命令編譯之後:

gcc gnustep-config --objc-flags` -L/usr/GNUstep/System/Library/Libraries -lgnustep-base hello.m -o hello 

它給了我下面的錯誤:

/usr/bin/ld: /usr/GNUstep/System/Library/Libraries/libgnustep-base.so: undefined reference to symbol 'objc_msg_lookup' /usr/bin/ld: note: 'objc_msg_lookup' is defined in DSO /usr/lib/libobjc.so.2 so try adding it to the linker command line /usr/lib/libobjc.so.2: could not read symbols: Invalid operation collect2: ld returned 1 exit status

我是新來的Objective-C。我不知道鏈接器命令存在的位置。我嘗試將/usr/lib添加到env.變量中。但它沒有解決。 我也試圖找出他們的論壇上的解決方案(如果他們有一個!)。但他們沒有。

任何人都可以幫助我嗎?

在此先感謝!

回答

6

這是在抱怨你引用的代碼沒有鏈接到你的應用程序。有用的是,它告訴你什麼是缺失以及它在哪裏。嘗試將-lobjc添加到標誌。

+0

謝謝,我真是個傻瓜!那太簡單了!我認爲有些文件丟失了。非常感謝! – AnnGM 2012-08-01 19:51:25

0

試試這個:

gcc `gnustep-config --objc-flags` -o hello hello.m -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base 
4

於我而言只是增加-lobjc標誌,它完美地工作的命令行參數。

gcc `gnustep-config --objc-flags` -Wl,--no-as-needed -lgnustep-base -lobjc firstObjcProg.m -o firstObjcProg