我试图运行一个使用__builtin_popcountll
函数的程序。 当我编译使用生成文件,如下所示,其与编译命令/标志的源文件中的代码:g ++与Mountain Lion是否支持-msse4.2?
g++ -c -Wall `pkg-config opencv --cflags` -I./include -O3 -fopenmp -msse4.2 src/Utils.cpp -o src/Utils.o
它编译没有任何错误/警告。但是,当我尝试链接对象(.o)文件以构建可执行文件时,出现undefined symbols
错误。
下面是一个命令:
g++ src/BoostDesc.o src/Utils.o src/main.o `pkg-config opencv --libs` -lgomp -o main
,这是完全错误:
Undefined symbols for architecture x86_64:
"___builtin_popcountll", referenced from:
__ZN9boostDesc5Utils12matchHammingERKN2cv3MatERKSt6vectorIS2_SaIS2_EERS5_IS5_INS1_6DMatchESaISA_EESaISC_EE.omp_fn.0 in Utils.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [main] Error 1
我抬头的手册页在苹果的网站here海湾合作委员会,并建议该标志工程我假设它也适用于g ++。有人可以确认或反驳使用这个内建函数的可能性吗?日Thnx!
g++ --version
返回此:
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
你不需要将-msse4.2也传递到链接行吗? – Petesh
nope,代码适用于其他机器(很可能是某些linux)。尽管如此我仍然尝试并仍然给出相同的错误 – Ani