linux移植中常见的问题及解决的方法

上传人:aa****6 文档编号:50958993 上传时间:2018-08-11 格式:PPT 页数:28 大小:377.50KB
返回 下载 相关 举报
linux移植中常见的问题及解决的方法_第1页
第1页 / 共28页
linux移植中常见的问题及解决的方法_第2页
第2页 / 共28页
linux移植中常见的问题及解决的方法_第3页
第3页 / 共28页
linux移植中常见的问题及解决的方法_第4页
第4页 / 共28页
linux移植中常见的问题及解决的方法_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《linux移植中常见的问题及解决的方法》由会员分享,可在线阅读,更多相关《linux移植中常见的问题及解决的方法(28页珍藏版)》请在金锄头文库上搜索。

1、C C程序在程序在LINUXLINUX移植中常见移植中常见 问题及解决方法问题及解决方法银博科技公司简介公司简介西安银博科技发展公司成立于西安银博科技发展公司成立于19921992年,属国有高年,属国有高 新技术企业,位于新技术企业,位于西安市西安市高新技术产业区高新路高新技术产业区高新路4242号号 金融大厦金融大厦1616层。层。19931993年被西安市科学技术委员会认定年被西安市科学技术委员会认定 为为“高新技术企业高新技术企业”,每年都被评为西安市高新技术,每年都被评为西安市高新技术 企业百强企业。企业百强企业。公司主要从事:计算机软件产品开发,系统集成公司主要从事:计算机软件产品开

2、发,系统集成 ,网络建设,银行业务信息系统的开发建设及解决方,网络建设,银行业务信息系统的开发建设及解决方 案,开发建设现代医院管理信息系统,研制生产网络案,开发建设现代医院管理信息系统,研制生产网络 信息安全产品,设计安装重要场所的防盗报警和电视信息安全产品,设计安装重要场所的防盗报警和电视 监控系统,提供计算机及外部设备的维修和长期保修监控系统,提供计算机及外部设备的维修和长期保修 服务等。服务等。编译器的改变编译器的改变 C C程序编译器由程序编译器由unixunix的的cccc改换为改换为gccgcc gccgcc全称全称 :GNU project C and C+ compiler:

3、GNU project C and C+ compiler 集中了集中了c c、c+ c+ 、Objective C Objective C 三个编译版本,可以三个编译版本,可以编译编译 用这三语言编写的源代码。用这三语言编写的源代码。 gccgcc的版本的版本 gccgcc v v gccgcc的安装位置的安装位置 / /usr/lib/gccusr/lib/gcc-lib/target/version/-lib/target/version/ /usr/lib/gcc-lib/i386-cosix-linux/3.2/usr/lib/gcc-lib/i386-cosix-linux/3.2

4、/gdbgdb调试器调试器 gdbgdb - The GNU Debugger - The GNU Debugger gdbgdb的主要功能的主要功能 运行程序,设置所有能影响程序运行的选项运行程序,设置所有能影响程序运行的选项 保证程序在制定的条件下停止保证程序在制定的条件下停止 在程序停止时,可以检查变量的赋值在程序停止时,可以检查变量的赋值 修改程序,继续调试修改程序,继续调试 gdbgdb的启动方式的启动方式 gdbgdb program: program:指定要调试的程序指定要调试的程序 gdbgdb program core: program core:指定要调试的程序及其指定要调

5、试的程序及其 coredumpcoredump文件文件 gdbgdb program program pidpid: :指定要调试的程序及目前正在执指定要调试的程序及目前正在执 行的进程行的进程idid号号gdbgdb调试器调试器 退出退出gdbgdb 使用使用quitquit Ctrl+DCtrl+D Ctrl+CCtrl+C 结束任何一个结束任何一个gdbgdb的命令,返回的命令,返回gdbgdb的输入的输入 模式模式 gdbgdb的帮助的帮助 helphelp或或h h 得到得到gdbgdb命令类的列表命令类的列表 Help status Help status 得到一个得到一个stat

6、usstatus类的列表类的列表 Help command Help command 详细的列出单个命令的资料详细的列出单个命令的资料 Info Info 显示程序的状态显示程序的状态 Show Show 显示显示gdbgdb自身的状态自身的状态 Show version :Show version :显示显示gdbgdb的版本号的版本号 Show copyingShow copying:显示:显示 版权信息版权信息 Show warranty Show warranty :显示担保信息:显示担保信息GCCGCC命令行选项命令行选项 基本基本 gdbgdb命令命令 file file 装入想要

7、调试的可执行文件装入想要调试的可执行文件 kilkil 终止正在调试的程序终止正在调试的程序 list list 列出产生执行文件的源代码的一部分列出产生执行文件的源代码的一部分 next next 执行一行源代码但不进入函数内部执行一行源代码但不进入函数内部 step step 执行一行源代码但进入函数内部执行一行源代码但进入函数内部 run run 执行当前被调用的程序执行当前被调用的程序 quit quit 终止终止gdbgdb watch watch 监视一个变量的值监视一个变量的值 break break 在代码里设置断点,这使程序执行到这里被挂起在代码里设置断点,这使程序执行到这里

8、被挂起 make make 能不退出能不退出gdbgdb就可以重新产生可执行文件就可以重新产生可执行文件 shell shell 不必离开不必离开gdbgdb就能执行就能执行shellshell命令命令LINUXLINUX移植中常见的问题移植中常见的问题 缺少程序相应的系统头文件缺少程序相应的系统头文件 系统调用中动态链接库的改变系统调用中动态链接库的改变 两个系统中函数的差别两个系统中函数的差别 程序环境变量的缺失程序环境变量的缺失 两个系统中文件目录文件格式的差别两个系统中文件目录文件格式的差别 两个系统中编译器之间的差别两个系统中编译器之间的差别 两个系统在两个系统在InformixIn

9、formix数据库开发中的差别数据库开发中的差别 两个系统中命令及其参数的差别两个系统中命令及其参数的差别缺少程序相应的系统头文件缺少程序相应的系统头文件 找不到找不到hbjm.hhbjm.h文件文件 原因:在原因:在/ /usrusr/include/include目录下找不到目录下找不到hbjm.hhbjm.h文件文件 解决:从原解决:从原unixunix机机/ /usrusr/include/include目录下找目录下找到此文件到到此文件到linuxlinux机上机上动态链接库的改变动态链接库的改变 高版本的开发库高版本的开发库glibc-devel-2.2.90-24glibc-de

10、vel-2.2.90-24中中, ,没有没有提供提供libsocket.alibsocket.a库库 解决:增加解决:增加libortcplibortcp的链接的链接 将将crtbegin.ocrtbegin.ocrtbeginS.ocrtbeginS.o crtbeginT.ocrtbeginT.ocrtend.ocrtend.ocrtenS.ocrtenS.o拷入当前编译目录拷入当前编译目录两个系统中函数的差别两个系统中函数的差别 生成临时文件名失败。生成临时文件名失败。 LinuxLinux系统下,对系统下,对mktempmktemp() ()函数需替换为函数需替换为mkstempmks

11、temp() (),用法不同,用法不同 在在linuxlinux下,高版本的开发库已经对下,高版本的开发库已经对tempnamtempnam函数不在支持。系统建议使用函数不在支持。系统建议使用mkstempmkstemp() ()函数函数来替代。来替代。两个系统中函数的差别两个系统中函数的差别修改例程如下:修改例程如下:funcfunc() () char strFileName50;char strFileName50;/ /strcpy(strFileNamestrcpy(strFileName, “/, “/tmp/file_XXXtmp/file_XXX”);”); strcpy(st

12、rFileNamestrcpy(strFileName, “/, “/tmp/file_XXXXXXtmp/file_XXXXXX”);”); / /注意注意XXXXXX改为改为XXXXXXXXXXXX/ /mktemp(strFileNamemktemp(strFileName); ); mkstemp(strFileNamemkstemp(strFileName); ); 两个系统中函数的差别两个系统中函数的差别 由于由于LinuxLinux高版本库向国际化标准靠近高版本库向国际化标准靠近, ,对一对一些旧的函数不在支持些旧的函数不在支持. .需要将需要将c c语言中普通函数语言中普通函数

13、getsgets替换成宽字符处理函数替换成宽字符处理函数fgetwsfgetws. . 解决:更改生成库解决:更改生成库libhbjm.alibhbjm.a中的文件中的文件I_chr.cI_chr.c 第第7979行中的函数行中的函数gets()gets()为为fgetwsfgetws() ()/gets( /gets( cmdcmd ); );fgetwsfgetws( ( cmdcmd ); );程序环境变量的缺失程序环境变量的缺失 在初始化网点在初始化网点initnodeinitnode,这个程序的编译时,这个程序的编译时,连接的是连接的是informixinformix的动态库,的动态

14、库,libifsql.solibifsql.so在在/ho/home/Informix/lib/esqlme/Informix/lib/esql目录下,环境变量中没目录下,环境变量中没有此路径设置。有此路径设置。 解决:解决:在环境变量在环境变量LD_LIBRARY_PATHLD_LIBRARY_PATH的的变量中增加变量中增加/home/informix/lib/esql/home/informix/lib/esql两个系统中文件目录文件格式的差别两个系统中文件目录文件格式的差别 文件目录的差别文件目录的差别 在在UNIXUNIX系统中默认目录为系统中默认目录为/ /usr/samusr/s

15、am,LINUXLINUX系统默认目录为系统默认目录为/home/home/samsam 解决:将原来所有解决:将原来所有/ /usr/samusr/sam路径改为路径改为/home/home/samsam两个系统中文件目录文件格式的差别两个系统中文件目录文件格式的差别 文件格式的差别文件格式的差别 拷贝拷贝文件文件到软盘上的数据,在打卡机上读数到软盘上的数据,在打卡机上读数据时报错据时报错 解决:在拷贝软盘之前,对文件格式进行转解决:在拷贝软盘之前,对文件格式进行转换:将换:将linuxlinux格式转换成格式转换成dosdos格式格式 unix2dos filenameunix2dos filename dos2unix dos2unix filenamefilename两个系统中编译器之间的差别两个系统中编译器之间的差别 函数调用前未声明函数调用前未声明 gccgcc编译器要求所有函数在调用前,必须定义或声明编译器要求所有函数在调用前,必须定义或声明函数函数。 解决:解决:在在cash0703.eccash0703.ec前定义函数前定义函数static int Print_Page(int iPage); static int Print_Page(int iPage); static int Print_AllPage(in

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号