一个GCC4.6.3的奇妙问题的糊涂解决方案
因为工作中需要OpenCV,又不想用Windows,所以我就在Linux下编译安装OpenCV了。一开始,由于我的计算机不能安装ubuntu12.04,所以我安装了ubuntu13.04,opencv的环境也配置的很顺利。
Ubuntu 13.04 的编译问题与解决方案
在13.04上安装完成opencv后,我便兴冲冲的实验了一把,其实我的程序什么也没有做,只是添加了包含了opencv的头文件而已。然后我就编译呀。
// file : test.c
#include <opencv/cv.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
return 0;
}
编译命令:
$ gcc -c test.c
$ gcc test.o -o test
结果就输出了一堆如下的信息:
test.o:test.c:function cvDecRefData: error: undefined reference to 'cvFree_'
test.o:test.c:function cvDecRefData: error: undefined reference to 'cvFree_'
test.o:test.c:function cvGetRow: error: undefined reference to 'cvGetRows'
test.o:test.c:function cvGetCol: error: undefined reference to 'cvGetCols'
test.o:test.c:function cvReleaseMatND: error: undefined reference to 'cvReleaseMat'
test.o:test.c:function cvSubS: error: undefined reference to 'cvAddS'
test.o:test.c:function cvCloneSeq: error: undefined reference to 'cvSeqSlice'
test.o:test.c:function cvSetNew: error: undefined reference to 'cvSetAdd'
test.o:test.c:function cvGetSetElem: error: undefined reference to 'cvGetSeqElem'
test.o:test.c:function cvEllipseBox: error: undefined reference to 'cvEllipse'
test.o:test.c:function cvFont: error: undefined reference to 'cvInitFont'
test.o:test.c:function cvReadIntByName: error: undefined reference to 'cvGetFileNodeByName'
test.o:test.c:function cvReadRealByName: error: undefined reference to 'cvGetFileNodeByName'
test.o:test.c:function cvReadStringByName: error: undefined reference to 'cvGetFileNodeByName'
test.o:test.c:function cvReadByName: error: undefined reference to 'cvGetFileNodeByName'
test.o:test.c:function cvReadByName: error: undefined reference to 'cvRead'
test.o:test.c:function cvContourPerimeter: error: undefined reference to 'cvArcLength'
test.o:test.c:function cvCalcHist: error: undefined reference to 'cvCalcArrHist'
collect2: error: ld returned 1 exit status
我就纳闷了呀,我的程序里只是包含了头文件啊,怎么会使用opencv的函数呢,所以每必要产生这么多对opencv库函数的依赖呀!
于是,我看了看编译时产生的汇编代码,看看是否有啥蹊跷。
gcc -S test.c
打开test.s文件,看看,果然又很多opencv的库函数呢。于是我就开始添加opencv的库。最后就这样解决了。
$ gcc test.o -o test -lopencv_core -L/usr/local/lib -lopencv_highgui
12.04下gcc的问题与解决
跟在13.04下差不多的情况,按照上面的过程就可以解决了。
正当我为解决了这个问题高兴的时候,我遇到了新的问题。
一般我习惯把输入文件放到编译命令的最后,结果这样照样会出现问题。
出现问题的编译命令是:
$ gcc -o test -lopencv_core -L/usr/local/lib -lopencv_imgproc test.o
我发现
只要把test.o放到-l..这些选项的前面,就不会出现函数未定义的问题。
就这样算解决了把。以前我也遇到过由于链接库的位置不对而导致链接不正确的情况,看来编译器还不是那么智能啊,以后要小心了。
一个GCC4.6.3的奇妙问题的糊涂解决方案的更多相关文章
- 2021年9月28日,老是遇到一些非常奇葩的问题。就离谱、好好的一个web项目就莫名奇妙坏了。
起因是这样的:我前几天用idea2020编辑器,用ssm框架搭建了一个图书管理系统.只是将图书信息的增删改查实现,还有用户的注册和登录功能实现.本来想着今天将用户信息的删除和修改完善以下,本来是很简单 ...
- 终于成为博客员的一员了,这是我的第一篇博文,写一个关于ul li内容宽度的问题和解决方案
第一次写博文,写一个刚才遇到的问题吧. 关于ul li文字长度不固定,一行显示多列.当指定宽度时,文字长度超过指定的li宽度时解决方案: 如下代码 <h4>发送对象(共10个会员)< ...
- 学习笔记_第一个strut程序_之中文乱码,过滤器解决方案及过程总结
1. 第一次碰到加过滤器的过程,就是在学习struct1的时候,中文乱码 几个需要注意的关键字 2.什么叫package 所谓package就是打包的意思,就是说以下程序都是处于这个包内,所以一开始 ...
- [转]Win7、Windows Server 2008下无法在Windows Service中打开一个已经存在的Excel 2007文件问题的解决方案
昨天,组里一个小朋友告诉我,他写的报表生成服务中无法打开一个已经存在的Excel 2007文件,他的开发环境是Win7.Visual Studio .Net 2008(Windows Server 2 ...
- WebBrowser加载一个URL被多次调用DocumentCompleted 的问题解决方案<转>
关于DocumentCompleted事件,MSDN给出的解释是在文档加载完毕后执行,但是在我的程序中DocumentCompleted却被多次调用,查了一下资料,大概出现了以下几种情况. 1.Web ...
- 一个坑爹的Swift报错原因分析与解决方案
有时候在实际开发中,完全没有任何问题.但是一到实机测试,就会直接卡机 let count = scoreStorage.count return scoreStorage[Int(arc4rand ...
- 编译GCC4.8.2
公司的机器上默认是GCC4.4.6,为了完整的体验C++11,可以自己编译一个GCC4.8.2出来(自带了更高版本的glibc). 以下是备忘. 1.下载GCC源码以及依赖库 gmp ftp: ...
- [MEF插件式开发] 一个简单的例子
偶然在博客园中了解到这种技术,顺便学习了几天. 以下是搜索到一些比较好的博文供参考: MEF核心笔记 <MEF程序设计指南>博文汇总 先上效果图 一.新建解决方案 开始新建一个解决方案Me ...
- ACEXML解析XML文件——我是如何学习并在短时间内掌握一个库的使用方法的
最近做的C++项目中需要使用xml文件保存一些信息,程序启动时会读取这些信息.最终经过主程的评测,决定使用ACEXML库来读取解析XML文件. 好吧,至于为什么选择ACEXML库,我就不说了.既然选择 ...
随机推荐
- 1106. Two Teams(dfs 染色)
1106 结点染色 当前结点染为黑 朋友染为白 依次染下去 这题是为二分图打基础吧 #include <iostream> #include<cstdio> #include ...
- createSQLQuery与createQuery的区别
本文原址 : http://stta04.javaeye.com/blog/377633hibernate 中createQuery与createSQLQuery 昨晚帮同事看代码到凌晨2点多,今早6 ...
- poj2135
加深对最小费用最大流的理解题 题目求无向图来回和最短的路径,每条边只能走一次 不难想到,无向图中来回等于从源点出发走两条不同路径到汇点(区别于k短路,这里每条边只能走一次): 考虑到边的限制,不难想到 ...
- WindowsServer2008配置MySql Proxy
WIndowsServer2008配置MySql Proxy: 1.MySql Proxy的下载地址:http://dev.mysql.com/downloads/mysql-proxy/,选择Win ...
- CodeForces Round #285 Div.2
C.Misha and Forest (图论 BFS) 比赛进行了一半才想起来有场CF没打,=_=|| 前两道题快速切掉,C题一直卡没什么好的思路 憋了几天,忍不住偷偷瞄了一下别人AC的代码,发现我题 ...
- 实现类似QQ的即时通信程序(十一)
此为网络编程的一个系列,后续会把内容补上....
- I.MX6 driver goto 使用
/************************************************************************** * I.MX6 driver goto 使用 * ...
- Android handler Thread 修改UI Demo
/********************************************************************** * Android handler Thread 修改U ...
- 【转】【iOS】导航栏那些事儿
原文网址:http://www.jianshu.com/p/f797793d683f 参考文章 navigationItem UINavigationItem UINavigationBar UIBa ...
- (转)solr排序OOM解决方法
转自 http://topcat.iteye.com/blog/1293650 问题 lucene使用排序时会将被排序字段全部加入内存再进行排序,当多次使用不同字段进行排序时会造成OOM问题 解决方案 ...