エラーが発生していld: symbol(s) not found for architecture x86_64
ます。以前のスレッドを徹底的に検索しましたが、解決策が見つかりませんでした。
テストとして、test.cpp プログラムをコンパイルしています。
#include <iostream>
using namespace std;
int main(){
return 0;
}
Makefile で:
CXX=g++
CXXFLAGS=-g -Wall -W -Wconversion -Wshadow -Wcast-qual -Wwrite-strings $(shell root-config --cflags --glibs)
CPPFLAGS+=-MMD -MP
LDFLAGS=-g $(shell root-config --ldflags)
LDLIBS=$(shell root-config --libs)
test.o: test.cpp
test: test.o
-include test.d
Linux コンピューターで実行make test
すると、次の正しい出力が生成されます。
CAM ~/Wenu $ make test
g++ -g -Wall -W -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -pthread -m64 -I/cvmfs/lhcb.cern.ch/lib/RootConfig/pro/x86_64-slc5-gcc46-opt/root/include -L/cvmfs/lhcb.cern.ch/lib/RootConfig/pro/x86_64-slc5-gcc46-opt/root/lib -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic -MMD -MP -c -o test.o test.cpp
cc -g -m64 test.o -L/cvmfs/lhcb.cern.ch/lib/RootConfig/pro/x86_64-slc5-gcc46-opt/root/lib -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic -o test
CAM ~/Wenu $
Mac でコンパイルすると、リンク段階でld: symbol(s) not found for architecture x86_64
エラーが発生して失敗します。
MAC ~/Transmit/Wenu $ make test
g++ -g -Wall -W -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -pthread -m64 -I/opt/local/root-v5-34-00/include -L/opt/local/root-v5-34-00/lib -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -lpthread -Wl,-rpath,/opt/local/root-v5-34-00/lib -lm -ldl -MMD -MP -c -o test.o test.cpp
i686-apple-darwin11-llvm-g++-4.2: -lGui: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lCore: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lCint: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lRIO: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lNet: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lHist: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lGraf: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lGraf3d: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lGpad: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lTree: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lRint: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lPostscript: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lMatrix: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lPhysics: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lMathCore: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lThread: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lpthread: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -rpath: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: /opt/local/root-v5-34-00/lib: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -lm: linker input file unused because linking not done
i686-apple-darwin11-llvm-g++-4.2: -ldl: linker input file unused because linking not done
cc -g -m64 test.o -L/opt/local/root-v5-34-00/lib -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -lpthread -Wl,-rpath,/opt/local/root-v5-34-00/lib -lm -ldl -o test
Undefined symbols for architecture x86_64:
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int) in test.o
"std::ios_base::Init::~Init()", referenced from:
___tcf_0 in test.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [test] Error 1
どんな助けでも大歓迎です。
これに関連する場合、私は OS X 10.7.5 を搭載した 64 ビット Mac を使用しており、XCode のコマンド ライン ツールに付属のコンパイラを使用しています。
MAC ~/Transmit/Wenu $ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.4.2
Thread model: posix
ROOT は、プログラムで使用する C++ ライブラリのコレクションです。