6

そこで、Ubuntuとclang3.0をインストールし、簡単なprogram.mを入手しました。

#include <Foundation/Foundation.h>
int main()
{
        @autoreleasepool{
            NSLog(@"Hi");
        }

        return 0;
}

そして私はそれを次のようにコンパイルしようとします:

clang first.m -I /usr/include/GNUstep/ -lgnustep-base -fconstant-string-class=NSConstantString -objc

そして私は得る

undefined reference to objc_autoreleasePoolPush
undefined reference to objc_autoreleasePoolPop

だから私は少しグーグルしてobjc2をインストールして試しました:

clang first.m -I /usr/include/GNUstep/ -lgnustep-base -fconstant-string-class=NSConstantString -objc2

しかし、何も変わりません。たぶん誰かが同じ問題を解決しましたか?

4

3 に答える 3

1

私のUbuntuシステムにlibobjc2がインストールされていると、first.mファイルのコピーが次の行でコンパイルされます。

clang first.m `gnustep-config --objc-flags` `gnustep-config --objc-libs` \
-I /usr/include/GNUstep/ -lgnustep-base

しかし、多分それはあなたのコマンドラインの終わりにある単なるタイプミスですか?

最初の例の最後にある-objcと2番目の例の最後にある-objc2は、それぞれbjcとbjc2という名前の実行可能ファイルを作成するようにclangコンパイラーに指示しています。-lobjのことですか?objライブラリでのリンクは、Objective-Cランタイムライブラリを取得するために重要だと思います。libobjc2プロジェクトを使用しても、生成されるライブラリの名前はlibobjc.so.xyのままです。コマンドに-lobjcが含まれていない場合、どのように正しくリンクできるかわかりません。私は間違っている可能性がありますが、それなしではうまくいきません。

于 2013-03-11T23:17:38.200 に答える
0

これがGNUstepに当てはまるかどうかはわかりませんが、OS X-fobjc-arcで、ARCでコンパイルする場合は、コンパイラフラグを追加する必要があります。

于 2013-02-17T13:53:33.140 に答える
0

GNUmakefileでビルドしてみますか?

書き方は次のとおりです。

http://www.gnustep.it/nicola/Tutorials/WritingMakefiles/node2.html

1つは次のようにコンパイルおよびリンクできます

clang first.m -c -MMD -MP -DGNUSTEP -DGNUSTEP_BASE_LIBRARY = 1 -DGNU_GUI_LIBRARY = 1 -DGNU_RUNTIME = 1 -DGNUSTEP_BASE_LIBRARY = 1 -fobjc-runtime = gnustep-1.7 -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OB -fobjc-nonfragile-abi -D_NONFRAGILE_ABI -pthread -fPIC -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fgnu-runtime -fconstant-string-class =NSConstantString-I。-I / usr / local / include -o obj / first.obj / first.mo

clang -rdynamic -pthread -shared-libgcc -fexceptions -fobjc-nonfragile-abi -fgnu-runtime -o obj / first ./obj/first.obj/first.mo -L / usr / local / lib -lgnustep-base- lobjc -lm

GNUstepmakeパッケージの設定方法によって異なります。

于 2013-02-19T16:53:54.933 に答える