Linux环境 SUSE11
1、QT在安装编译时需要linux平台X11开发包,SUSE服务器版(SUSE Linux Enterprise Server
11)安装完成后,发现/usr/local/include/X11目录下没有所需头文件,反复安装多次后情况仍是如此。决定放弃Server版,尝试Desktop版本(注意桌面基础包的安装),发现相应目录下有所需头文件,然后进行QT的编译安装。
2、QT安装参考《安装Qt-x11开发工具》,无非就是:解压缩 -> 配置环境变量
-> 运行./configure -> make
-> make install
3、将Win32平台程序向Linux平台移植
MySQL
需要QT平台MySQL插件,SUSE自带libqsqlmysql.so动态库(/usr/lib/qt4/plugins/sqldrivers目录下)。
添加mysql用户(需要系统root账户):grant all
privileges on *.* to manager@'%' identified by 'yz1q2w3e4r';
mysql执行脚本(系统root账户):mysql -u root -p
< /home/test/opt/setup/sql/*.sql
设置MySQL服务开机自启动:YAST-系统-系统服务(运行级别)-专家方式-设置MySQL运行级别为2,3,4,5
win32插件在安装MySQL时选择安装开发包,编译可获得。参考qt中文论坛
多线程
需要/usr/include/目录下三个头文件:pthread.h、sched.h、semaphore.h
所需动态库在/usr/lib目录下:libpthread.so
串口编程
使用qextserialport进行串口编程。qextserialport-1.2版支持现有串口枚举功能,但只能在Win32下使用,linux下使用qextserialport-1.1.tar包进行开发。需要在项目pro文件中指定静态库的路径,或将静态库放入QT目录lib文件夹下。
具体操作参考《串口编译》。
gSoap
采用 gsoap_2.7.12.tar开发包。
用头文件重新生成linux下gSoap所需开发文件,项目编译时需要socket动态库libsocks.so.1.0
4、项目编译
需要修改pro文件unix:DEFINES +=
_TTY_POSIX_。
gSoap服务启动后通过外部浏览器可能无法正常访问,这是应检查linux防火墙是否对端口做了屏蔽。外部无法访问mysql数据库也可能时这个原因造成的。
修改linux目录权限:chmod -R 777 dir
5、目前仍无法解决的问题
通过QSharedMemory来进行共享内存管理,代码如下:
//2009.8.5 linux shareMemory
error
QSharedMemory mem("ShareObj");
if
(!mem.create(1))//check
memory is exist
{
qDebug()<
return
0;
}
Win32下进程退出后共享内存段会自动释放,Linux下则不会自行释放。