有一个包含Python“绑定”的GITHUB RePO,它是我感兴趣的C++库。自述文件中有大量关于如何在Linux上安装C++库的信息,但没有关于如何使用Mac OS来进行信息处理。p>
我还打开了一个问题,要求自述文件安装说明包括除linux之外的mac OS特定安装。在这个问题上没有任何活动
以下是两份回购协议:
由于C++软件包不能通过BREW/PIP/ANACODA进行安装,我不确定该怎么走。
我试过./configure
和make
。没有./configure
文件
要解决缺少./configure
的问题,请阅读一个名为autoconf
的工具,它可以为您生成./configure
。我用brew
安装了它,但不确定要传递什么参数。这些文档很难理解:https://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Making-configure-Scripts.html
仅仅使用make
会导致错误提示:error: unsupported option '-fopenmp'
,这让我陷入了一个完全不同的兔子洞,让我在Makefile中添加了行:
CPP = /usr/local/opt/llvm/bin/clang
CPPFLAGS = -I/usr/local/opt/llvm/include -fopenmp
LDFLAGS = -L/usr/local/opt/llvm/lib
omp_hello: omp_hello.c
$(CPP) $(CPPFLAGS) $^ -o $@ $(LDFLAGS)
那感觉很危险,因为我不知道这些东西意味着什么。此外,它还导致了一个新的错误:*** missing separator. Stop.
然后我读到这可能是因为使用了“软”选项卡而不是“硬”选项卡,它们可以通过cat -e -t -v makefile_name
识别。我找到了一行缺少“硬”制表符的地方(上面的缩进行),并插入了它。这导致了一个新的错误:
make: *** No rule to make target `omp_hello.c', needed by `omp_hello'. Stop.
接下来,根据杨玉石的建议和他的后续评论,我根据他的回答更改了第39行和第40行,并将一些附加文件的位置添加到CXXFLAGS
变量中:
-I//opt/homebrew/Cellar/libomp/11.0.1/include
-L/opt/homebrew/Cellar/libomp/11.0.1/lib
这让我走得更远了。接下来,OSX不喜欢这个脚本试图安装的地方,正如this answer所解释的。因此,我在makefile中更改了这两行,这两行似乎指示了安装位置:
INSTALL_HEAD_DIR = $(DESTDIR)/usr/include/libspot
INSTALL_LIB_DIR = $(DESTDIR)/usr/lib
到
INSTALL_HEAD_DIR = $(DESTDIR)/usr/local/include/libspot
INSTALL_LIB_DIR = $(DESTDIR)/usr/local/lib
这确实让我走得更远了。接下来,我遇到一个错误,抱怨makefile中以下几行的平面-t
:
@install -t $(INSTALL_LIB_DIR) $(LIB_DIR)/*.so
@install -t $(INSTALL_HEAD_DIR) $(INC_DIR)/*.h
因此,我删除了这些标志,这导致了以下错误:
Checking the headers installation directory (/usr/local/include/libspot)
Checking the library installation directory (/usr/local/lib)
Installing the shared library (libspot.so)
install: /usr/local/lib: Inappropriate file type or format
我找不到阅读材料,也不知道如何修复。如需进一步协助,不胜感激
下面是我试图回答这个问题的SO和其他资源的列表:
我该怎么做
如果您知道如何做到这一点,您是否还可以简要解释每个步骤背后的概念?我很乐意学习一点,而不是仅仅按照正确的顺序复制和粘贴命令
通常需要运行
brew install <your C++ package>
或将源代码下载到某个目录并运行一组命令:虽然它通常可以工作,但有些软件包不能安装在Mac上,因为它们的维护人员没有为Mac准备配置
我下载了prjoect (libspot)并在Mac上成功编译了它。我更改了Makefile中的两行(39和40)以使其工作。(在this answer之后)
您应该通过键入带有“正确”Makefile的
make
来获取二进制文件(如果您看到类似“找不到omp.h”的内容,请将
-I/usr/local/opt/libomp/include
添加到CXXFLAGS
。)为了这个问题
更新的问题描述中的错误消息
正在告诉我们文件
omp_hello.c
丢失。编写Makefile是为了将源代码omp_hello.c
编译为可执行的二进制文件omp_hello
。如果我有C源文件(omp_hello.c
),Makefile将允许我只需键入而不是
这只是一个普通的编译过程,与Python无关。错误消息表示缺少要编译的源代码(
omp_hello.c
)看起来这是一个带有自定义Makefile的小项目。通常,您只需使用
make
编译代码。您得到的错误似乎表明缺少llvm。您可能希望在this answer之后尝试安装llvm相关问题 更多 >
编程相关推荐