我的情况与this thread中讨论的情况非常相似。我要这样做的原因是我将OpenCV与CUDA 6.0一起使用,但是CUDA当前与libstdc++链接。我遵循了建议放置标志-stdlib=libstdc++
的答案,以及我们设置CXX
和CXXFLAGS
的另一种方法,但是正如被评论的那样:Macports似乎不承认这些标志,并且仍然使用libc++而非预期的libstdc++构建。
我想在该话题中发表评论,要求采取后续行动,但很遗憾,我的声誉还不够。
有谁知道如何让Macports使用libstdc++安装OpenCV?
编辑1:我没有回过头来检查下面提供的答案之一是否有效。使用libstdc++编译OpenCV会导致其他一些主要使用libc++的非CUDA项目出现问题,因此我不太可能尝试。但是,如果有人可以在下面尝试一个答案并可以给我评论,我会接受一个答案。
编辑2:此问题不再适用于我的情况,因为CUDA 7.0 RC默认情况下具有libc++支持。我仍然会按照“修改版1”接受答案。
最佳答案
在boost的情况下,我能够强制MacPorts像这样链接到libstdc++:
sudo port -s install boost configure.cxx_stdlib="libstdc++" configure.compiler="macports-gcc-4.7"
就是这样!显然,您无需自己传递“-stdlib = libstdc++”。 otool -L显示了我希望看到的内容:
$ otool -L /opt/local/lib/libboost_date_time-mt.dylib
/opt/local/lib/libboost_date_time-mt.dylib:
/opt/local/lib/libboost_date_time-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libgcc/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.18.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
/opt/local/lib/libgcc/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
关于opencv - OSX 10.9上的Macports-使用libstdc++编译opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24600350/