在虚拟机里面我静态、动态编译了opencv(一个做视觉处理的开完库),目录是这样的usr/local/opencv ,里面有include、lib、bin等,那lib下既有.so的,又有.a文件。我程序里面用的函数在libcv.a 、libhighgui.a、libcxcore.a里面
我用这条语句动态编译,可以编译
g++ -o Cap -I/usr/local/opencv/include/opencv -L/usr/local/opencv/lib -lcxcore -lcv -lhighgui Cap.cpp
那么现在到底是如何静态编译呢?
有人告诉我这样写:g++ -o Cap -I/usr/local/opencv/include/opencv -L/usr/local/opencv/lib -libcxcore.a -libcv.a -libhighgui.a Cap.cpp
结果显示 usr/bin/ld cannot find libcv.a 可是这几个.a文件明明就在目录下啊
困扰好久,各位帮帮忙,不胜感激~
奶茶dsk 于 2011-01-18 10:15:21发表:
[i=s] 本帖最后由 奶茶dsk 于 2011-1-18 10:18 编辑 [/i]
g++ -o Cap -I/usr/local/opencv/include/opencv -L/usr/local/opencv/lib -static -lcxcore -lcv -lhighgui Cap.cpp
静态动态库重名的时候,默认是按照动态库的方式链接的,
可以加上-static开关就行了,
qingdandian 于 2011-01-17 19:34:16发表:
对于熟悉linux的人应该很简单啊?为什么没人帮帮?