在OSX - c++上从源代码构建
building from source on OSX - c++
我几乎对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
我读到在最新的OSX
版本中构建ITK
并不简单,因为clang
的新路径,并且应该设置这样的标志:CMAKE_CXX_FLAGS = -stdlib=libstdc++ -std=c++11
或CMAKE_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->
前缀
第46、137行文件Code/Common/itkParametricPath.txx
需要在Evaluate
Code/Numerics/Statistics/itkWeightedCentroidKdTreeGenerator.txx
也有同样的问题,在第120行和126行调用GenerateTreeLoop
与Code/BasicFilters/itkTernaryFunctorImageFilter.txx
相同,在第49行,第62行&75与SetNthInput
的调用
Testing/Code/Common/itkMeshSourceGraftOutputTest.cxx
也有同样的问题,在GraftOutput
SetNthInvocation
与Code/BasicFilters/itkBloxBoundaryPointImageToBloxBoundaryProfileImageFilter.txx
的问题
还有更多,但它们是一个相对乏味的修复,以使其能够编译。我已经粘贴了diff,应该没问题,虽然它来自一个稍微不干净的版本,所以可能会有一些变化缺失。
我放弃了尝试修复它与libc++
的编译- abs
的歧义问题是开始,可能还有更多,所以我觉得不值得追求
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 从源代码构建 gRPC C++
- 为什么Qt必须从源代码构建以进行交叉编译?
- 尝试使用 MSVC 从源代码构建 qt 创建器:无法打开包含文件:"stddef.h":没有这样的文件或目录
- 从源代码构建 pcl 1.7.2
- SQLite - 从源代码构建库或将源代码直接包含在我的项目中
- 从源代码构建 openCV 之前的步骤
- 在 OSX 上从源代码构建 GIMP 2.10 在"gimp-debug-tool-2.0"失败
- 我如何只构建 TensorFlow lite,而不是从源代码构建所有 TensorFlow
- 使用 bazel 从源代码构建张量流服务遇到错误:C++规则'@org_tensorflow//…'编译失败(出口 4)
- CMake configure_file没有源代码构建
- 如何为源代码构建指定搜索目录
- 从MACOS上的源代码构建QT时错误
- 在CentOS 7上从源代码构建TileServer GL
- GRPC C++从源代码构建致命错误
- 从源代码构建Qt 5.8 - 配置:未知命令行选项'-c++11'
- 如何从可从C++代码调用的 Ada 源代码构建静态库?
- 从源代码构建编译器是否会带来更好的优化
- 从源代码构建 MySQL 连接器/C++(找不到 Boost 库错误)