gpt4 book ai didi

c++ - 在 OSX 上从源代码构建 - C++

转载 作者:搜寻专家 更新时间:2023-10-31 01:38:44 27 4
gpt4 key购买 nike

我对 c++ 几乎一无所知,我正在尝试从 10.10 OSX 上的源代码构建 ITK 工具。所以我严格遵循文档,当我尝试 make 时,我得到了一堆重复的错误

duplicate symbol ___sputc in:
CMakeFiles/itktiff.dir/tif_aux.o
CMakeFiles/itktiff.dir/tif_unix.o
ld: 69 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [bin/libitktiff.3.16.0.dylib] Error 1
make[1]: *** [Utilities/itktiff/CMakeFiles/itktiff.dir/all] Error 2

我收到红色消息,例如 Linking CXX shared library ../../../bin/libitkgdcm.dylib(红色表示错误?)

然后我到了最后

[ 44%] Built target itkgdcm
make: *** [all] Error 2

我读到,由于 clang 的新路径,在最新的 OSX 版本中构建 ITK 并不简单,而且必须设置这样的标志:CMAKE_CXX_FLAGS = -stdlib=libstdc++ -std=c++11CMAKE_CXX_FLAGS = -stdlib=libstdc++ -std=c++03 但都没有用.

有人可以帮忙吗?

最佳答案

你在库中得到了不应该存在的虚假符号。

官方的解决方法是使用更新版本的 ITK 工具,但是如果你必须使用旧版本,那么你需要配置 C 选项 -std=gnu89 来制作内联的行为方式应该使这项工作正常进行。

OSX 附带了两个 C++ 库 - 一个 clang 默认为 libc++ 和一个官方 gcc 默认为 libstdc++,如果你正在编译多个 C++ 项目构建最终目标,然后您必须确保它们都使用相同的 C++ 标准库进行编译。

假设您计划与 libstdc++ 链接,正如您所指出的那样,我已经更新了编译说明:

这意味着您应该使用以下选项运行 clang:

cmake -DBUILD_SHARED_LIBS=true -DCMAKE_C_FLAGS=-std=gnu89 -DCMAKE_CXX_FLAGS="-stdlib=libstdc++ -std=c++03" CMakeLists.txt

文件 Code/Common/itkKLMSegmentationBorder.h 有几个对 rhs.m_Pointer 的引用,应该是 rhs->m_Pointer -编译器将其作为一个明显的错误。

有很多模板方法实例混淆的问题,我在这里添加了一些引用:

Utilities/vxl/core/vnl/vnl_matrix_fixed_ref.h 中的第 657 行向 equal 的调用添加一个 this-> 前缀/p>

文件 Code/Common/itkParametricPath.txx 第 46、137 行需要在 Evaluate 的所有调用之前添加 this->

Code/Numerics/Statistics/itkWeightedCentroidKdTreeGenerator.txx 相同的问题,在第 120、126 行调用 GenerateTreeLoop

Code/BasicFilters/itkTernaryFunctorImageFilter.txx 相同的问题,在第 49、62 和 75 行调用 SetNthInput

Testing/Code/Common/itkMeshSourceGraftOutputTest.cxx 相同的问题,在调用 GraftOutput 的第 153 行

SetNthInvocation 问题与 Code/BasicFilters/itkBloxBoundaryPointImageToBloxBoundaryProfileImageFilter.txx

There are more, but they're a relatively tedious fix to get it to compile. I've put a pastebin of the diff up, which should be OK, although it was from a slightly unclean version so there may be some changes missing.

我放弃了修复它以使用 libc++ 进行编译的尝试 - abs 的歧义问题是开始,而且可能还有更多,所以我不觉得它是值得追求。

关于c++ - 在 OSX 上从源代码构建 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32372786/

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