こんにちは私はスレッドライブラリを使用するためにboostとリンクしようとしていますが、構築することはできません。Boost(Homebrew)とのリンクMac C++
私は自作(MACパッケージインストーラ)でブーストをインストールし、それが/usr/local/Cellar/boost/1.50.0
ディレクトリにあります。
私の主なファイルは今...
#include <iostream>
#include <boost/thread.hpp>
私のメイクファイルは、このようなものです非常に簡単です:
CC = g++
BASE_FLAGS = -m32 -wAll
# INCLUDE BASE DIRECTORY AND BOOST DIRECTORY FOR HEADERS
LDFLAGS = -I/usr/local/Cellar/boost/1.50.0/include -I/opt/local/include
# INCLUDE BASE DIRECTORY AND BOOST DIRECTORY FOR LIB FILES
LLIBFLAGS = -L/usr/local/Cellar/boost/1.50.0/
# SPECIFIY LINK OPTIONS
LINKFLAGS = -l boost_thread-mt -lboost_system
# FINAL FLAGS -- TO BE USED THROUGHOUT
FLAGS = $(BASE_FLAGS) $(LLIBFLAGS) $(LDFLAGS) $(LINKFLAGS)
# NOTE FOR BOOST -- YOU ONLY NEED TO INCLUDE THE PATH BECAUSE IT ONLY INSTALLS HEADER FILES
main: main.cpp
$(CC) $(FLAGS) -o main.out main.cpp
そして、私はこれを実行すると、私はboost_system見つかりませんライブラリを取得。私はboost_systemを取る場合、私はこのようになりますエラーが出る:オプションを指定せずにbrew install boost
を単に使用している場合は
ld: warning: ignoring file /usr/local/lib/libboost_thread-mt.dylib, file was built for unsupported file format (0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0) which is not the architecture being linked (i386): /usr/local/lib/libboost_thread-mt.dylib
Undefined symbols for architecture i386:
"boost::system::system_category()", referenced from:
__static_initialization_and_destruction_0(int, int)in ccKwJWzr.o
"boost::system::generic_category()", referenced from:
__static_initialization_and_destruction_0(int, int)in ccKwJWzr.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
make: *** [main] Error 1
をなぜあなたは '-mt'接尾辞と1なしで一つのファイルをリンクしていますか? '-lboost_thread -lboost_system'または' -lboost_thread-mt -lboost_system-mt'を試してください –
ちょうど-lboost_threadとリンクすると、ldのエラーが発生します:-lboost_threadのライブラリが見つかりません collect2:ldが1を返しましたexit status' – JonMorehouse
両方に '-mt'を追加するとどうなりますか? –