FreeTDS的使用及移植

FreeTDS的使用及移植

 

        前面已经介绍了FreeTDS的基本功能,本篇就来详细介绍FreeTDS的使用以及移植工作。FreeTDS使用是非常简单的,难点是在其移植方面,琢磨了两天才算搞明白,查阅了网上大量介绍FreeTDS的文章,没有找到介绍移植方面的。因此,希望对有需要的朋友有帮助。

一、编译安装

编译安装FreeTDSlinux下常见的安装软件包是一样的,分为configure,make,makeinstall三个步骤。因此,第一步配置(configure)就显得特别重要了,一般安装这种软件configure --help都是可以查看相应的帮助的。以下是我这次用到的属性了。

./configure --prefix=/opt/freetds --with-tdsver=7.1 --enable-msdblib --disable-libiconv

选项介绍:

--prefixfreetds的安装路径

--with-tdsverfreetds的版本,此处选择7.1

--enable-msdblib是打开访问microsoft sql功能

--disable-libiconv是关闭编码转换,此功能作用还未验证过

配置完了以后,就可以,makemake install了,然后就可以看到/opt目录下多了个freetds目录。

二、测试

FreeTDS的测试分为两种,一种是直接采用相应的app进行测试,第二种是采用C语言调用FreeTDSAPI进行测试。以下分别进行。

1、采用FreeTDS生成的app测试

FreeTDS安装以后,在/opt/freetds/bin文件下有几个app,可以直接运行,如此处用于测试的tsql。测试步骤分为三个步骤,如摘录自官网的测试方法。

 

此处,我的数据库是已经连通了并且开启了远程连接(具体方法请参考第五点),因此,采用tsql直接进行测试,测试结果如下所示:

注意:再输入命令的时候只是将相应的命令读入了缓冲区并未执行,因此,需要输入一个go,才会执行,当然可以将多条命令先放入缓冲区再执行。

 

以上只是进行了简单的测试,具体更多的使用方法,还请大家自己尝试。

参考网址:

http://www.freetds.org/userguide/serverthere.htm#SERVERTHERE.TSQL

2、C调用FreeTDSAPI测试

此种方式是我们最终想要的,最后我们只需要相应的lib,调用相应的API即可整合到我们的工程里面去。FreeTDS相应API测试在官网上有例子,以下给出本次我做的测试代码。具体请下载附件。

需要注意的是如果FreeTDS相应的库没有安装在/usr/lib/lib等系统库下面,那么需要设置LD_LIBRARY_PATH(链接库)环境变量,否则运行的时候会提示找不到库,如下所示:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/freetds/lib/:

三、移植

移植应该说是最后一步,也是最为重要的一步,因为是需要将相应的操作做到板端去。移植过程也是相当痛苦,经历了两天,曾经一度放弃改用QT数据库,但是,在用QT数据的时候也存在相应的问题。最后,意外发现了该类型库的移植方法,因此,才把此问题解决了。

此类库不是更加--host来选择交叉编译器进行移植的,而是需要自己设置CCLDCPP变量,如果没有设置,那么默认采用gcc相应编译器进行编译。

因此、首先设置好CCLD以及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的方法是一样的,具体参考一下网址:

http://wenku.baidu.com/link?url=A2ZcL_SrbaIWQQNiFOV65-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

http://www.doc88.com/p-896906539797.html


七、资源下载

 FreeTDS相关资源点击下载

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值