linux移植过程中近日遇到问题汇总贴

来源:互联网 发布:papi网络用语文字版 编辑:程序博客网 时间:2024/06/02 02:50

0.C++编译错误"a storage class can only be specified for objects and funct

http://www.aichengxu.com/view/12401

enum ModelName

{

};

在C/C++规范中,定义了四种storage class的修饰符。

  • auto
  • register
  • static
  • extern

很显然,是这个"static"用的地方不对。查找了好多C++书籍和比较权威的解释,都指出这个"static"只能用于object和function。这个static用于修饰class的storage,很明显是错误的。去掉这个static,编译通过。


1.为什么我在Dev-C++4.9.9.2中写C++程序时,主程序老是要用int main(), 如果用void main(),则提示:‘main’must return 'int'?

标准c++支持两种main()
int main()
{
...
}和
int main (int argc, char* argv[])
{
...
}

http://bbs.csdn.net/topics/80066773

2.linux下文本文件格式

。text

http://www.2cto.com/os/201207/141177.html

win与linux之间文本文件格式转换

3linux下如何将,控制台输出的所有内容,全部输出到一个文本文件?

http://bbs.csdn.net/topics/390482813(重定向,不是很懂)

4mkdir

http://baike.baidu.com/link?url=bMKRX1VmXKgCjnlaUuz76CZH0twkpfEhIQZysz6f0jLltavThYS1_S75PsxkpaEa_lty2wCKGmWMmBuUTM0BHa#3_3

linux下与vc略有区别

int mkdir(const char *pathname, mode_t mode);

5编译源文件

gcc-./运行程序名

./configure-make(生成makefile文件)e-make install (安装软件)

rpm -i 软件包名(rpm包安装)(大型软件通常用很多包组成,最好不要一个个安装很可能不对,必须yum install gdb......)

yum install 软件包(源需要配置好)

http://www.cnblogs.com/javadotnet/articles/1918930.html

6can not open shared object file :no such file or directory(./solve_scheduler-console时出现这样的问题)

链接库文件总是找不到

已经完全按照http://zhmy.michael.blog.163.com/blog/static/861578792011109105428965/做了

http://www.2cto.com/os/201306/222628.html(主要参考)

ldd solve_scheduler_console

列出来所有依赖库的地址;将找不到的库地址记下

修改配置文件/etc/ld.so.conf 加入/usr/local/mysql/lib ,库文件的所在文件夹的路径;运行ldconfig重建/etc/ld.so.cache

运行ldconfig重建/etc/ld.so.cache

这相当于在系统添加了这几个库文件的路径

其实有三种方法(http://www.cnblogs.com/smartvessel/archive/2011/01/21/1940868.html)(使用库的方法总结非常到位http://blog.csdn.net/chinalinuxzend/article/details/4236354)

7。vim命令

http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html

i改变输入方式;:wq,esc :wq! 

8动态库的调用这里还强调一点:

链接的库文件中又使用了另一个库文件,也就是exe引用dll,dll又引用多个dll,这时候在exe的库配置属性中,要把引用的引用库的路径也要配齐(我用的exlipse,gcc也一样),http://blog.csdn.net/aiwoziji13/article/details/7330333这篇博文给我很大的启示;解决 

"undefined reference to" 问题(无法生成运行程序)

tinyxml在linux下的使用http://bbs.csdn.net/topics/340234416(没有详细看,我使用的源码编译不是库)

9解决了上述遇到的问题,可能有遗漏,但是最主要的难点已经列在上边了(其他可见于本上简要笔记),我打算用eclipse调试一下,虽然已经生成了运行程序,并且可以运行,但是debug时:

launching has encountered a problem,error with command:gdb --version

问了一下大牛,是因为没有装linux下的gdb,这是一款linux专用的调试软件,gdb -version,详见百科:

http://baike.baidu.com/link?url=F32Fr69qWR1ipA9SOTuhPp6VeJ37DCPpsC5k_WJfOpciIvy1XkCLksD5RXZnl-O-Igk-EheBH6nzX0EVsPFD7_

http://bbs.csdn.net/topics/340186379

http://www.cnblogs.com/thingk/p/3626967.html

linux下gdb的安装开始主要参考:http://www.douban.com/note/195447281/:

http://ftp.gnu.org/gnu/gdb/下载地址

现在查看下gdb/configure.tgt内容,查找你的机器对应的target选项,例如cpu,系统的标识我这台服务器是ppc64的,安装了redhatLinux,所以对应powerpc64-*-linux*)     gdb_target=linux这条。

    现在进行编译前的准备,回到gdb-6.5的目录运行。/config.sub powerpc64-redhat-linux,如果一切正常的话,会返回下面这样的结果powerpc64-redhat-linux-gnu现在,可以进行安装步骤了。

    首先,编译./configure ppc64-redhat-linux不过官方推荐的编译器是gcc,所以上面的命令改成这样CC=gcc ./configure ppc64-redhat-linux接下来,就是很make和make install了,一切正常的话,那么GDB就安装完成了。

http://bbs.sjtu.edu.cn/bbstcon,board,Embedded,reid,1160484890,file,M.1160484890.A.html

源码编译不过:发生类似的错误:

ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz(提示termcap包没有装)

装上之后同样编译不过:

http://www.educity.cn/wenda/350167.html

http://blog.163.com/ojb_123/blog/static/241774242010112104456464/

http://bbs.csdn.net/topics/390412200

http://www.embedu.org/Column/Column89.htm(讲了一下gdb调试的技巧,还没有仔细研究,因为有eclipse)http://blog.csdn.net/ling1874/article/details/4768545

http://blog.sina.com.cn/s/blog_6db275da0100uu4j.html

http://www.linuxidc.com/Linux/2013-01/78159.htm

http://ftp.gnu.org/gnu/gdb/gdb-7.4.1.tar.gz(gdb下载)

所有以上安装方法都大同小异。但是我始终编译不过源码,换了一个版本与red hat6.2发布日期相近的版本也编译不过;

http://r.789695.n4.nabble.com/gcc-and-g-errors-while-compiling-R-on-Linux-ppc64-td828538.html(-mminimal-toc

后来我通过系统镜像盘,里面的package文件夹里找,果然找到了gdb的rpm安装包,这里有一个问题,我手动挂载镜像没有挂载成功,yum install gdb提示not available需要研究一下以前的博文http://blog.csdn.net/u011978022/article/details/45541497

我这里自动挂载,打开的package文件夹,找到gdb的安装包,然后rpm -i gdb...(http://blog.csdn.net/wangchong0/article/details/6800224参考这篇博文rpm安装)即可,到这里终于可以调试eclipse里的C++程序了

(这里安装最好用yum install gdb,因为rpm包不止一个;ls -a|grep gdb  ——>有四五个呢。。。)

10http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html解压缩命令大全zxvf,zcvf,去掉z为压缩

11常量指针与指针常量http://blog.csdn.net/beyond0525/article/details/7409305

非常详尽的一篇描述

* (指针)和 const(常量) 谁在前先读谁 ;*象征着地址,const象征着内容;谁在前面谁就不允许改变。

12本以为到这里可以愉快的调试了,调试的一些技巧可以参考

http://tieba.baidu.com/p/2282213623?see_lz=1

http://developer.51cto.com/art/201102/245676.htm

主要是F6逐过程,F5逐语句(进入函数),其他的一些设置断点的方法,太高端没哟用到,暂且没有看

 

13linux文件路径:

这就是apache的rpm包软件安装后的配置文件路径:/etc/httpd/conf/httpd.conf其它的文件也一样的,可以用cd命令来且换路径:cd /usr/local也可以用pwd命令来显示当前路径

程序很普通,但是有个问题以后需要注意: 在Ubuntu下(其他Linux没有试过)文件路径分割符可以是'/' 或者'//',但是不可以是'\'或者'\\'!因为'\'会被当做转义符, 即'n'仅代表字符n,但是'\n'代表换行符。

http://www.linuxidc.com/Linux/2014-06/103673.htm

14中文乱码,最大的问题:

eclipse中的中文为乱码,很不爽,于是我开始改中文乱码的问题,但是这是我最后悔做的,主要参考如下网页:

http://jingyan.baidu.com/article/d5c4b52bc94e06da560dc5cc.html

http://zhidao.baidu.com/link?url=ZxUga60AHtvmkR18FcMiM0zQrT2yRtb0-nhAh3Q6Q2ImNwOTPOzf_hkFHbVdSLZN2JWp6d4pxvmTVOPW0xcQPpLFN_8Fk4S1s2TYmLgfx1G

http://blog.csdn.net/indexman/article/details/8712734

http://zhidao.baidu.com/link?url=RfdeTTglXggKtlf2052RKLse2ITRVsBwoaSsCI_CYbw9C6MphteakzSEkNimW-zzfaBvLeQAGSts16NragSaOK

 

主要做的是:从系统镜像光盘里找到中文安装包,没有找到上面几篇文章里讲的包,但是我搜了一下镜像光盘“Chinese”,找到了几个关于中文的包,百度了一下确实为跟语言相关的,将上面的安装包,以及依赖的一些包统统都安装了之后

修改 / etc / sysconfig / i18n文件,将其改成以下内容:LANG = " zh_CN.GB18030 "LANGUAGE = " zh_CN.GB18030:zh_CN.GB2312:zh_CN "SUPPORTED = " zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en "SYSFONT = " lat0-sun16 "

我只改了两句1,4(2。3没有加)这是否是我出现问题的原因————

到现在,虚拟机进入系统,闪退发生:弹出对话框vmware workstation 不可恢复的错误:(vmui)NOT_IMPLEMENTED,点击确定,虚拟机闪退。。。

无语。。。全部项目资料代码都在里面,一个月的移植成果,环境配置成果。。。

无奈,遇到问题,可以让自己有更大的收获

再开一篇博文,详细记录,这种问题的一些思路,作为自己以及同行的参考经验,从昨天深夜到今天上午自己搜集请教得来的一些方法进行记录,足够一篇博文了。

 

 


 

0 0