linux webservice服务器端,Linux下Qt4.4.3 & gSoap2.7.12服务器端开发

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下则不会自行释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值