gpt4 book ai didi

c++ - 与 Boost (Homebrew) Mac c++ 链接

转载 作者:IT老高 更新时间:2023-10-28 21:56:11 25 4
gpt4 key购买 nike

您好,我正在尝试与 boost 链接以使用线程库,但似乎无法构建它。

我使用 HomeBrew(mac 软件包安装程序)安装了 boost,它位于 /usr/local/Cellar/boost/1.50.0 目录中。

我的主文件现在很简单...

#include <iostream>
#include <boost/thread.hpp>

我的make文件是这样的:

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,则会收到如下所示的错误:

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

最佳答案

如果您刚刚使用 brew install boost 没有任何选项,这将构建一个 64 位二进制文​​件 - 静态和动态。

您上面代码的主要罪魁祸首是使用了 -m32 选项,删除它就可以了。这意味着您正在尝试将 32 位构建链接到 64 位库。

Boost 库通过符号链接(symbolic link)到 /usr/local/Cellar/ 中的实际二进制文件和头文件 - (/usr/local/lib/usr/local/include)。您的 PATH 应该包含这些,因此无需在您的 makefile 中指定这些。

请注意,brew(通过扩展 gcc)通常会默认构建 64 位二进制文​​件,从您的错误输出中可以看出,Boost 库是基于这些二进制文件构建的。 (您可以使用这些工具otoolfilelipo 来检查库的架构)

关于c++ - 与 Boost (Homebrew) Mac c++ 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12518973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com