linux学习心得

1.动态链接
这两天实践了一下怎样在linux下创建动态链接。感觉网上的资料虽然翔实,但仍然有疏漏之处。
1)g++和gcc的区别
http://hi.baidu.com/torpedoes/blog/item/d48ad8c45ddfd9cb39db498d.html
某些时候编不过去,可以试试换换cc的值。

2)gcc4.1.1下似乎对类型检查严了一些,dlsym返回的void*类型不能转换为相应的函数指针类型,需要强制转换。某些网上的例子在这里编不过去。

3)显式调用时,要注意动态库函数的声明,可能要加extern "C"才能正常执行。(显式调用是运行时加载,所以编译能过,执行却不对了。)可以用nm命令看看链接库的符号表,以确定问题所在。

2.驱动开发
推荐读物《Beginning Linux Programming》,该书第3版已有中译本。
但第3版中的例子在2.6以后的新内核中不能编译。经研究发现,由于新版内核采用KBuild系统编译内核,所以驱动也必须使用KBuild系统编译。

具体修改方法参见http://blog.chinaunix.net/u1/52350/showart_441201.html

2.4内核和2.6内核的差别比较大,还可以参考下文:
http://blog.chinaunix.net/u1/43047/showart_1070696.html

3.GUI设计工具
GTK+的程序可以使用Glade来设计界面,它会生成一个脚本,运行该脚本,并make就行了。
QT的稍微麻骋恍?br />1)首先打开QT Designer(新建时,不能使用KDE Designer,但修改建好后的工程可以,不知道是BUG,还是怎么回事)新建一个窗体,然后新建一个main.cpp,并将刚才生成的窗体选为主窗体。
2)打开KDev C/C++,选择导入工程,选择QMake Based导入,然后即可在IDE中编译并运行。
上面写的两个都是官方的设计器,而WxWidgets没有官方的设计器,但有很多第三方的设计器,我使用的是免费且开源的wxFormBuilder。用它可生成XRC文件,而WxWidgets中有使用XRC文件的接口。

4.编程所用命令简介
cc:C/C++编译器
as:GNU汇编编译器
ld:链接器
as86、ld86:8086汇编编译器和链接器
linux文件分割用split,合并用cat。最近下了一本采用split分割的书,但是我没有Linux环境,于是在windows的命令行下用type、>、>>合并了文件。

5.printf和wprintf混用的问题
在linux中不可混用printf和wprintf,如果混用的话,则后使用的函数没有输出。
例如
printf("a/n");
wprintf(L"b/n");
输出为:
a


wprintf(L"b/n");
printf("a/n");
输出为:
b

关于这个问题的讨论见
http://bytes.com/groups/c/852681-wprintf-conflicts-printf-glibc-bug

解决方法统一使用一种函数
例如:
wprintf(L"%s","a/n");
wprintf(L"b/n");

printf("a/n");
printf("%ls",L"b/n");

5.关于SIGPIPE导致的程序退出
http://www.cppblog.com/elva/archive/2008/09/10/61544.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值