前面已经介绍了FreeTDS的基本功能,本篇就来详细介绍FreeTDS的使用以及移植工作。FreeTDS使用是非常简单的,难点是在其移植方面,琢
磨了两天才算搞明白,查阅了网上大量介绍FreeTDS的文章,没有找到介绍移植方面的。因此,希望对有需要的朋友有帮助。
一、编译安装
编译安装FreeTDS和linux下常见的安装软件包是一样的,分为configure,make,makeinstall三个步骤。因此,第一步配置
(configure)就显得特别重要了,一般安装这种软件configure --help都是可以查看相应的帮助的。以下是我这次用到的属性了。
./configure --prefix=/opt/freetds --with-tdsver=7.1 --enable-
msdblib --disable-libiconv
选项介绍:
--prefix是freetds的安装路径
--with-tdsver是freetds的版本,此处选择7.1
--enable-msdblib是打开访问microsoft sql功能
--disable-libiconv是关闭编码转换,此功能作用还未验证过
配置完了以后,就可以,make,make install了,然后就可以看到/opt目录下多了个freetds目录。
二、测试
FreeTDS的测试分为两种,一种是直接采用相应的app进行测试,第二种是采用C语言调用FreeTDS的API进行测试。以下分别进行。
1、采用FreeTDS生成的app测试
FreeTDS安装以后,在/opt/freetds/bin文件下有几个app,可以直接运行,如此处用于测试的tsql。测试步骤分为三个步骤,如摘
录自官网的测试方法。
此处,我的数据库是已经连通了并且开启了远程连接(具体方法请参考第五点),因此,采用tsql直接进行测试,测试结果如下所示:
注意:再输入命令的时候只是将相应的命令读入了缓冲区并未执行,因此,需要输入一个go,才会执行,当然可以将多条命令先放入缓冲区再执行。
以上只是进行了简单的测试,具体更多的使用方法,还请大家自己尝试。
参考网址:
2、C调用FreeTDS的API测试
此种方式是我们最终想要的,最后我们只需要相应的lib,调用相应的API即可整合到我们的工程里面去。FreeTDS相应API测试在官网上有例子,以
下给出本次我做的测试代码。具体请下载附件。
需要注意的是如果FreeTDS相应的库没有安装在/usr/lib、/lib等系统库下面,那么需要设置LD_LIBRARY_PATH(链接库)环境
变量,否则运行的时候会提示找不到库,如下所示:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/freetds/lib/:
三、移植
移植应该说是最后一步,也是最为重要的一步,因为是需要将相应的操作做到板端去。移植过程也是相当痛苦,经历了两天,曾经一度放弃改用QT数据库,但是,
在用QT数据的时候也存在相应的问题。最后,意外发现了该类型库的移植方法,因此,才把此问题解决了。
此类库不是更加--host来选择交叉编译器进行移植的,而是需要自己设置CC、LD、CPP变量,如果没有设置,那么默认采用gcc相应编译器进行编
译。
因此、首先设置好CC、LD以及CPP环境变量
export CC=arm_v5t_le-gcc
export LD=arm_v5t_le-ld
export CPP=arm_v5t_le-cpp
然后,进行配置
./configure --host=arm-linux --prefix=/usr/local/freetds-arm --with-
tdsver=7.1 --enable-msdblib --disable-libiconv
此处--host设置为arm-linux即可,和编译器无关
配置过程中可能会遇到以下错误:
../libtool: eval: line 950: syntax error near unexpected token `|’
解决办法是:export NM=nm
然后重新配置即可。
参考网址:
http://blog.csdn.net/dadoneo/article/details/8155044
交叉编译完成安装以后,则可以将/opt/freetds-ti相应的库文件拷贝到板端的文件系统某个位置,如果没有在默认的/usr/lib,/lib
位置下,则需要设置LD_LIBRARY_PATH,方法和前面一样。
四、移植测试
移植测试和前面一样,只是在编译C程序的时候需要采用交叉编译器,如arm_v5t_le-gcc进行编译。
运行过程中可能会出现以下错误:
找不到librt.so.1
此错误是由于板端lib下面没有librt.so.1库,该库其实是一个链接库,解决此方法只需要到相应交叉编译器下面拷贝librt.so相关库,到板
端的lib或者此处freetds的lib中。
如果找不到可以采用find . -name librt.so进行搜索。如下所示:
因此,现在测试就和前面是一样的了
五、SQL2008开启远程连接
SQL2000开启远程连接的方法和SQL2008的方法是一样的,具体参考一下网址:
mGUKwZRKfnwFc5EVrJozWHVWxwD9Pw-
1xZPmAtNXhBdMkguD3XHd4hAyfg8uJMVxKv6VsVuba6Vxm3gouANom
六、参考资料
http://blog.csdn.net/kunp/article/details/387013
http://blog.csdn.net/helonsy/article/details/7207497
http://www.itpub.net/thread-1442700-1-1.html
http://blog.csdn.net/dadoneo/article/details/8155044
七、资源下载
FreeTDS相关资源点击下载
阅读(1898) | 评论(0) | 转发(0) |