Hola, estoy intentando vincular con boost para usar la biblioteca de threading, pero parece que no se puede construir.Enlace con Boost (Homebrew) Mac C++
Instalé boost con HomeBrew (instalador de mac package) y está en el directorio /usr/local/Cellar/boost/1.50.0
.
Mi archivo principal es muy simple en este momento ...
#include <iostream>
#include <boost/thread.hpp>
Mi archivo make es así:
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
Y cuando corro esto, tengo una biblioteca que no se encuentra para boost_system . Si saco la boost_system, entonces me sale un error que se ve así:
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
¿Por qué está la vinculación de un archivo con el sufijo '-mt' y otro sin él? Pruebe '-lboost_thread -lboost_system' o' -lboost_thread-mt -lboost_system-mt' –
hola, cuando me enlace con solo -lboost_thread me da un error de ld 'ld: biblioteca no encontrada para -lboost_thread collect2: ld returned 1 estado de salida' – JonMorehouse
¿Qué ocurre cuando agrega '-mt' a ambos? –