Xcodeでcのコンパイルエラーについて

このQ&Aのポイント
  • Xcodeでc言語のコンパイルエラーが発生し、ld: 2 duplicate symbols for architecture x86_64というエラーメッセージが表示される
  • 検索しても簡単なプログラムのエラーの解決方法が見つからず困っている
  • コンパイルエラーの解決方法やuse -vオプションの使い方が知りたい
回答を見る
  • ベストアンサー

Xcodeでのcのコンパイルエラーについて。

Xcodeでc言語のコンパイル #include <stdio.h> int main(void) { printf("%d", 15 + 37); return(0); } をコンパイルすると ld: 2 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) となります。 いろいろ検索してみたのですが、こんな簡単なプログラムのエラーはのっていませんでした。 なにが問題なのでしょうか。 あと use -v ってのもどうやって使うのでしょうか。 よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

検索してみた感じ、 > ld: 2 duplicate symbols for architecture x86_64 この前段階のエラーメッセージに、原因となった重複シンボル名が表示されているはずなので、エラーメッセージを補足したほうが回答が得られやすいと思います。 で、もしmainが重複しているようなら、選んだプロジェクトが悪かったのかも。

masax-twn
質問者

お礼

ありがとうございます!! 確認したところ、コンパイルできました! 一応エラーメッセージのせときます。 duplicate symbol _main in: /Users/masax-twn/Library/Developer/Xcode/DerivedData/test-gjzssvwolqmndddoufipxpriflhe/Build/Intermediates/test.build/Debug/test.build/Objects-normal/x86_64/main.o /Users/masax-twn/Library/Developer/Xcode/DerivedData/test-gjzssvwolqmndddoufipxpriflhe/Build/Intermediates/test.build/Debug/test.build/Objects-normal/x86_64/List1-1.o duplicate symbol _main in: /Users/masax-twn/Library/Developer/Xcode/DerivedData/test-gjzssvwolqmndddoufipxpriflhe/Build/Intermediates/test.build/Debug/test.build/Objects-normal/x86_64/main.o /Users/masax-twn/Library/Developer/Xcode/DerivedData/test-gjzssvwolqmndddoufipxpriflhe/Build/Intermediates/test.build/Debug/test.build/Objects-normal/x86_64/test.o ld: 2 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 同一プロジェクトのファイル main.c(main.o)とtest.c(test.o)を消去すると動くようになりました。 Xcodeは敷居が高く、Cのテキストの一番最初にのっているプログラムが動かなくて困っていました。ありがとうございました!

関連するQ&A

  • Xcodeでのエラーについて

    MacでOpenCVを利用してKinectを扱おうとしているのですが、以下のようなエラーが出ました。 ちょっと自分には解決できないのですが、どうすればいいか教えてください。 言語はC++です。 Undefined symbols for architecture x86_64: "_cvCreateImage", referenced from: _main in main.o "_cvCvtColor", referenced from: _main in main.o "_cvReleaseImage", referenced from: _main in main.o "_cvShowImage", referenced from: _main in main.o "_cvWaitKey", referenced from: _main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

  • unity xcode

    Unity で作成したプログラムを Xcode でビルドを通そうとしたら clang: error:no such file or directory: 'aaaa' Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1 と言うエラーが言われます。解決方法を知ってる方いましたらご教授お願いしたいと思っております。 よろしくお願いします。

  • -fopenmpのコンパイルが通らなくなりました。

    とても困っているのでどなたかご存知の方、教えてください。 MACAir OS X 10.8.5を使っています 今まで普通にgccでコンパイルできていたのですが、 急にコンパイルエラーが出るようになりました。 思い当たる節としては、X-codeを新しいバージョン(5.0)にしたことです。 以下のようにOpenmpを実行するためにコンパイルしました。 $gcc -O hello_omp1.c -fopenmp ld: library not found for -lgomp clang: error: linker command failed with exit code 1 (use -v to see invocation) 以下は、hello_omp1.cの中身です。 #include<stdio.h> #ifdef _OPENMP #include<omp.h> #endif int main() { #ifdef _OPENMP printf("procs=%d\n",omp_get_num_procs()); printf("max #threads=%d\n",omp_get_max_threads()); #endif #ifdef _OPENMP #pragma omp parallel { printf("Hello world %d of %d\n", omp_get_thread_num(),omp_get_num_threads()); } #else printf("Helloworld\n"); #endif return 0; }

  • Xcodeでコンパイルエラーが出たときの調べ方

    iPhone向けのメーラーを作ってみようと思い、LibEtPan というライブラリをGitHubから ダウンロードして、以下のURLにある pop-sample.c のサンプルコードを使ってみたところ エラーが出ました。 結論からいうとエラーメッセージをそのままネットで調べて、とりあえずコンパイルエラーは 発生しなくなり、無事、ライブラリを使う事はできたのですが、なぜ動くようになったのか、 今のコンパイルエラーが出ていない状態がはたして正しいのかがわかっておりません。 以下、エラー発生までのプロセスです。 1、新規でiPhone向けプロジェクトを作成 2、libEtPanをサブプロジェクトとして追加 3、libetpan-ios.a をLinkに追加 4、Other Linker Flagsに -lsasl2 を設定 5、pop-sample.cのサンプルコードをコピー (サンプルコード内にあるファイル書き込みの処理はコンソールにメール内容を表示する処理に置き換えた) 手順3と4は以下GitHubのREADMEに書いてある手順です。 https://github.com/dinhviethoa/libetpan この状態でビルドすると、以下のようなエラーが発生しました。 Undefined symbols for architecture i386: "_SecCertificateCopyData", referenced from: _mailstream_low_cfstream_get_certificate_chain in libetpan-ios.a(mailstream_cfstream.o) "_deflate", referenced from: _mailstream_low_compress_write in libetpan-ios.a(mailstream_compress.o) "_deflateEnd", referenced from: _mailstream_low_compress_open in libetpan-ios.a(mailstream_compress.o) _mailstream_low_compress_free in libetpan-ios.a(mailstream_compress.o) "_deflateInit2_", referenced from: _mailstream_low_compress_open in libetpan-ios.a(mailstream_compress.o) "_inflate", referenced from: _mailstream_low_compress_read in libetpan-ios.a(mailstream_compress.o) "_inflateEnd", referenced from: _mailstream_low_compress_open in libetpan-ios.a(mailstream_compress.o) _mailstream_low_compress_free in libetpan-ios.a(mailstream_compress.o) "_inflateInit2_", referenced from: _mailstream_low_compress_open in libetpan-ios.a(mailstream_compress.o) "_kCFStreamPropertySSLPeerCertificates", referenced from: _mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o) _mailstream_low_cfstream_get_certificate_chain in libetpan-ios.a(mailstream_cfstream.o) "_kCFStreamPropertySSLSettings", referenced from: _mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o) "_kCFStreamSSLAllowsAnyRoot", referenced from: _mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o) "_kCFStreamSSLAllowsExpiredCertificates", referenced from: _mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o) "_kCFStreamSSLAllowsExpiredRoots", referenced from: _mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o) "_kCFStreamSSLLevel", referenced from: _mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o) "_kCFStreamSSLValidatesCertificateChain", referenced from: _mailstream_cfstream_set_ssl_enabled in libetpan-ios.a(mailstream_cfstream.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) そこで、上記のエラーメッセージをネットで検索し、結果的には以下のことをすることで、コンパイルエラーが 解消しました。 ・CFNetwork.framework と Security.framework のLink追加 ・Other Linker Flags に -lz の追加 そこで、質問ですが、熟練したプログラマは、上記のようなエラーが出たとき、 そのエラーメッセージからどういう情報を読み取り、どのようなプロセスで問題を 解決するのでしょうか? 私は、上記のエラーメッセージを見ても「Undefined symbols」というメッセージから 何かライブラリが足りないのかな?程度しか情報を読み取る事ができませんでした。 以上、よろしくお願いします。

  • YaccとLex

    macのターミナルでYaccとLexのプログラムを実行しようと思っています。Yaccプログラム(ren.y)は bison -y ren.y の後 gcc y.tab.c -ly -o a.exe の後更に ./a.exe でしっかり実行できます。しかし、YaccとLexのプログラム(Yaccプログラムはren1.y、Lexプログラムはren2.l)において、bison -dv -y ren1.y の後、flex -l ren2.l までのコンパイルはできるのですが、gcc y.tab.c lex.yy.c -ly -lfl -lm -o a でコンパイルリンクしようとすると、 ld: library not found for -lfl clang: error: linker command failed with exit code 1 (use -v to see invocation) と表示されエラーが生じてしまいます。 macにはXcodeもインストールしてあります。 どうしてy.tab.cとlex.yy.cのコンパイルリンクと実行プログラムaの作成に失敗するのでしょうか?

  • コンパイルエラー

    こんにちは。質問させてください。 Ubuntu9.04 64-bitであるプログラムをコンパイルしたところ、次のようなエラーが出ました。 gcc -lm -lz findpat.o bwt.o common.o libp2zip.o lcp.o mrs.o bittree.o tiempos.o enc.o -o findpat /usr/bin/ld: i386 architecture of input file `findpat.o' is incompatible with i386:x86-64 output /usr/bin/ld: i386 architecture of input file `libp2zip.o' is incompatible with i386:x86-64 output /usr/bin/ld: i386 architecture of input file `bittree.o' is incompatible with i386:x86-64 output /usr/bin/ld: i386 architecture of input file `tiempos.o' is incompatible with i386:x86-64 output /usr/bin/ld: i386 architecture of input file `enc.o' is incompatible with i386:x86-64 output collect2: ld returned 1 exit status make: *** [findpat] エラー 1 このエラーを直すにはどうすればよいでしょうか?

  • objective-cのエラーについて。

    私はiPhoneのネイティブアプリケーション開発の為にObjective-cを使用しております。 分からないエラーが出て困っていたので、こちらに投稿いたしました。 内容は以下の通りです。 ×Command/Developer/...〜.../gcc-4.0 failed with exit code 1  duplicate symbol _y in/Users/...〜.../NormalViewController.o ※MainViewController.hMainViewController.mという、UIViewController Sub Classファイルがあります。このファイルに何か以上があるのではないかと考えていました。 コード自体にはエラーはありません。 ,,このエラーなのですがお分かりの方がいらっしゃいましたらお願いします。ちなみに私は趣味での勉強程度しかプログラミング知識はありません。

  • c++ファイルのコンパイル

    OSX(10.3)を使用しているのですが、ターミナルを使用してc++ファイルをコンパイルしようとすると以下のように表示されます。 ld: Undefined symbols: std::ios_base::Init::Init() std::ios_base::Init::~Init() ___gxx_personality_v0 c++ファイル自体は #include <iostream> int main(void) { return 0; } なので間違っていないと思うのですが (> <) コンパイルはgcc -o a.exe test.cpp で行いました。 どうすれば良いのでしょうか?分かる方お願いします。

    • ベストアンサー
    • Mac
  • AIXでのImageMagickコンパイル

    AIX6.1上でImageMagickをコンパイルしています。 下記を参考に、ソースのzipファイルを入手し、configure & makeを実行しています。 http://www.imagemagick.org/script/install-source.php?ImageMagick=d51be4bn89f2518c2pqvmn64g3#unix 下記の(1)(2)のような状況で、コンパイルが成功しませんが、どなたか解決の仕方を ご存知でしたら教えて頂けませんでしょうか? (1)configureコマンドは、「configure: exit 0」で終了します。 但し、config.logを見ると、中でUndefined symbol:のエラーが出ています。 # grep Undefined config.log ld: 0711-317 ERROR: Undefined symbol: .shl_load ld: 0711-317 ERROR: Undefined symbol: .argz_add ld: 0711-317 ERROR: Undefined symbol: .argz_append ld: 0711-317 ERROR: Undefined symbol: .argz_count ld: 0711-317 ERROR: Undefined symbol: .argz_create_sep ld: 0711-317 ERROR: Undefined symbol: .argz_insert ld: 0711-317 ERROR: Undefined symbol: .argz_next ld: 0711-317 ERROR: Undefined symbol: .argz_stringify ld: 0711-317 ERROR: Undefined symbol: .strlcat ld: 0711-317 ERROR: Undefined symbol: .strlcpy ld: 0711-317 ERROR: Undefined symbol: .directio ld: 0711-317 ERROR: Undefined symbol: .getexecname ld: 0711-317 ERROR: Undefined symbol: .lltostr ld: 0711-317 ERROR: Undefined symbol: ._NSGetExecutablePath ld: 0711-317 ERROR: Undefined symbol: ._pclose ld: 0711-317 ERROR: Undefined symbol: ._popen ld: 0711-317 ERROR: Undefined symbol: .qsort_r ld: 0711-317 ERROR: Undefined symbol: .spawnvp ld: 0711-317 ERROR: Undefined symbol: .ulltostr ld: 0711-317 ERROR: Undefined symbol: ._wfopen ld: 0711-317 ERROR: Undefined symbol: ._wstat (2)makeコマンドも途中でUndefined symbol:のエラーで失敗します。 # make make all-am CCLD wand/libMagickWand.la ld: 0711-317 ERROR: Undefined symbol: .ParseCommandOption ld: 0711-317 ERROR: Undefined symbol: .IsCommandOption ld: 0711-317 ERROR: Undefined symbol: .ReplaceImageInListReturnLast ld: 0711-317 ERROR: Undefined symbol: .CropImageToTiles ld: 0711-317 ERROR: Undefined symbol: .StatisticImageChannel ld: 0711-317 ERROR: Undefined symbol: .ListCommandOptions ld: 0711-317 ERROR: Undefined symbol: .GetCommandOptionFlags ld: 0711-317 ERROR: Undefined symbol: .DuplicateImages ld: 0711-317 ERROR: Undefined symbol: .SmushImages ld: 0711-317 ERROR: Undefined symbol: .CommandOptionToMnemonic ld: 0711-317 ERROR: Undefined symbol: .ModeImage ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. make: 1254-004 The error code from the last command is 8. Stop. make: 1254-004 The error code from the last command is 2. Stop. #

  • apple mach-0 linker error

    cocos2dでアプリを作成していたのですが、apple mach-0 linker errorがでてしまいました。実機では問題なく動作しますが、シミュレータで実行しようとすると以下のエラーが出ます。エラーを見てみてフレームワークを入れ直すなどしましたが効果ありませんでした。 フレームワークのパスやBuild Phasesのcompile sourceに足りないソースファイルがないかなどなんども確認しましたが、原因らしい箇所が見つかりませんでした。 ちなみに広告にアスタを利用していますが、アスタのフレームワークのパスが通っているのも確認済みです。 Ld /Users/NYlon/Library/Developer/Xcode/DerivedData/cubeGame-cvpikdqyxcfshuckvzxbkvsljjcy/Build/Products/Debug-iphonesimulator/cubeGame\ iOS.app/cubeGame\ iOS normal x86_64 cd /Users/NYlon/Desktop/cubeGame/proj.ios_mac export IPHONEOS_DEPLOYMENT_TARGET=6.0 export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.3.sdk -L/Users/NYlon/Library/Developer/Xcode/DerivedData/cubeGame-cvpikdqyxcfshuckvzxbkvsljjcy/Build/Products/Debug-iphonesimulator -L/Users/NYlon/Desktop/cubeGame/proj.ios_mac -F/Users/NYlon/Library/Developer/Xcode/DerivedData/cubeGame-cvpikdqyxcfshuckvzxbkvsljjcy/Build/Products/Debug-iphonesimulator -F/Users/NYlon/Desktop/cubeGame/proj.ios_mac -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library -filelist /Users/NYlon/Library/Developer/Xcode/DerivedData/cubeGame-cvpikdqyxcfshuckvzxbkvsljjcy/Build/Intermediates/cubeGame.build/Debug-iphonesimulator/cubeGame\ iOS.build/Objects-normal/x86_64/cubeGame\ iOS.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -stdlib=libc++ -Xlinker -no_implicit_dylibs -mios-simulator-version-min=6.0 -framework MrdIconSDK -framework AdSupport -framework AudioToolbox -framework AVFoundation -framework CoreGraphics -framework Foundation -framework StoreKit -framework QuartzCore -framework Security -lcocos2d\ iOS -framework GLKit -framework SystemConfiguration -framework GameKit -framework iAd -framework UIKit -framework OpenGLES -framework CoreMotion -lgll -lz -Xlinker -dependency_info -Xlinker /Users/NYlon/Library/Developer/Xcode/DerivedData/cubeGame-cvpikdqyxcfshuckvzxbkvsljjcy/Build/Intermediates/cubeGame.build/Debug-iphonesimulator/cubeGame\ iOS.build/Objects-normal/x86_64/cubeGame\ iOS_dependency_info.dat -o /Users/NYlon/Library/Developer/Xcode/DerivedData/cubeGame-cvpikdqyxcfshuckvzxbkvsljjcy/Build/Products/Debug-iphonesimulator/cubeGame\ iOS.app/cubeGame\ iOS ld: library not found for -lgll clang: error: linker command failed with exit code 1 (use -v to see invocation) xcodeのバージョンは6.3.1、MacBookProのOSXYosemiteバージョンは10.10.3です。 よろしくお願いします。

専門家に質問してみよう