freetds 移植

移植freetds主要是为了能够在linux下,使用C语言访问微软的sqlserver数据库。

参考连接

http://blog.csdn.net/neighbor1000/article/details/8824084

http://blog.csdn.net/lovehere33/article/details/41118405

在ubuntu上安装

从官网下载最新的稳定版本。

http://www.freetds.org/

以前使用旧的0.61版本,连接sqlserver服务器,速度很慢,需要几十秒,有时甚至连接不上。

后来下载稳定版本,连接速度很快。目前下载的版本是freetds-1.00.39

编译之前,查看freetds能够支持的tds协议的版本号。

./configure --help 查看能够支持的版本。

如下内容显示了版本号。

  --with-tdsver=VERSION   TDS protocol version(4.2/4.6/5.0/7.0/7.1/7.2/7.3/7.4/auto) [auto]

运行如下命令

./configure --prefix=/usr/local/freetds1.0 --with-tdsver=7.0 --enable-msdblib --disable-libiconv

make && make install

就会在/usr/local/freetds1.0目录中安装。

测试方法

qt@tony:~$ cd /usr/local/freetds1.0/bin/
qt@tony:/usr/local/freetds1.0/bin$ ./tsql -H 192.168.3.126 -p 1433 -U user -P password
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> 

-H:sqlserver服务器的ip地址

-p: 端口号

-U: 用户名

-P:密码

查看sqlserver版本

1> select @@version
2> goMicrosoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) Apr  2 2010 15:53:02 Copyright (c) Microsoft CorporationEnterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2) (Hypervisor)(1 row affected)
1> 

arm交叉编译

export CC=arm-linux-gccexport LD=arm-linux-ldexport CPP=arm-linux-cpp./configure --host=arm-linux --prefix=/usr/local/freetds-arm --with-tdsver=7.0 --enable-msdblib --disable-libiconvmake && make install

之后就会在/usr/local/freetds-arm目录中有交叉编译的文件。

将其中的文件打包,放到开发板相应的/usr/local/freetds-arm目录中,移植就完成了。

ubuntu编译app

gcc -o testsybase testsybase.c -L /usr/local/freetds1.0/lib/ -lsybdb -I /usr/local/freetds1.0/include/

testsybase.c是测试程序名称。

使用C语言编写测试app,运行时,需要先指定freetds库文件的位置。

export LD_LIBRARY_PATH=/usr/local/freetds1.0/lib/

交叉编译app

arm-linux-gcc -o testsybase testsybase.c -L /usr/local/freetds-arm/lib/ -lsybdb -I /usr/local/freetds-arm/include/

将生成的文件添加到开发板上即可。

运行时添加环境变量export LD_LIBRARY_PATH=/usr/local/freetds7.0/lib/


Tony Liu

2017-5-26, Shenzhen

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优秀程序员的 18 大法则【转载】

DRY原则 不要重复&#xff08;Don’t repeat yourself&#xff09;——程序设计中一个最根本的原则就是要避免重复。许多编程结构&#xff08;比如循环、函数、类等&#xff09;的存在就是为了避免重复。一旦重复&#xff08;例如&#xff0c;一个长表达式&#xff0c;一系列语…

java邮件系统(java邮件收发系统源代码和下载地址)

2019独角兽企业重金招聘Python工程师标准>>> 本软件包包括源文件和可执行的jar文件 项目下载地址&#xff1a; 下载 1. 运行方式 A可以直接运行jar文件&#xff08;电脑上必须安装jdk1.6而且关联jar文件&#xff09; B可以用eclipse导入源文件然后运行 2功能简介…

两对光纤收发器用网线连接_为什么现在的人不喜欢用网线,反而更爱用光纤来传输呢?涨知识了...

随着通信技术的不断发展&#xff0c;信号传输介质已从原来的同轴电缆逐渐变为光纤。光纤传输完全满足大容量数据通信正确&#xff0c;可靠&#xff0c;高速传输和处理的要求&#xff0c;已成为世界上主要的通信方式。本文主要详细介绍光纤传输的基本知识&#xff0c;希望对您有…

openGauss学习笔记-170 openGauss 数据库运维-备份与恢复-导入数据-更新表中数据-使用合并方式更新和插入数据

文章目录 openGauss学习笔记-170 openGauss 数据库运维-备份与恢复-导入数据-更新表中数据-使用合并方式更新和插入数据170.1 前提条件170.2 操作步骤 openGauss学习笔记-170 openGauss 数据库运维-备份与恢复-导入数据-更新表中数据-使用合并方式更新和插入数据 在用户需要将…

C和指针之动态内存分配之编程练习4

1、问题 4.编写一个程序&#xff0c;按照下图中的样子创建数据结构&#xff0c;最后三个对象都是动态分配的结构。第一个对象则可能是一个静态的指向结构的指针。你不必使这个程序过于全面--我们将在下一章讨论这个结构。 2、代码实现 #include <stdio.h> #include <s…

.NET 6 攻略大全(四)

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;15分钟)接上篇内容&#xff0c;本篇文章将介绍&#xff1a;DependentHandle 现已公开、RyuJIT、即用型代码/Crossgen 2、.NET 诊断&#xff1a;EventPipe、SDK 的相关攻略。 DependentHandle 现已公开该 DependentHan…

[原创]同一个Tomcat,配置多个context、多个Host

需求前提&#xff1a; 系统结束后&#xff0c;需要部署到服务器上。 目前只可以映射到一个固定IP的非80端口。 而server端和web端都要暴露到外网。 所以配置两个context&#xff0c;使得client应用不需要添加服务名&#xff0c;直接使用IP即可访问&#xff1b;server可以通过ht…

[No000022]他们说:得诺贝尔奖到底有多难?

转载于:https://www.cnblogs.com/Chary/p/No000022.html

java操作redis简单学习3

2019独角兽企业重金招聘Python工程师标准>>> package com.hanchao.testredis;import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Set;import redis.clients.jedis.Jedis;import com.alibaba.fastjson.JSON; import com.al…

Xamarin效果第三篇之手机底部弹窗

前面一篇文章把基本的大框架搞定了,这不再逐个去实现里面的细节;今天主要是分享点击了CollectionView内的点点点然后从手机底部弹出一个可以交互的窗口;直接看看最终实现的效果:作为初来乍到的小萌新只能求助万能的群友让大佬们给指条光明通畅的大道,不然容易跑偏;最终给的方向…

自定义sql_一个简单易用的开源BI软件,专为SQL用户设计的开源库

poli一个易于使用的SQL报告应用程序&#xff0c;专为SQL爱好者而设计。SQL中的电源数据分析&#xff0c;可获得更快的业务洞察力。特性⚡️ 自托管和轻松设置平台独立的Web应用程序 单个JAR文件单个SQLite DB文件。在5分钟内启动并运行。连接任何支持JDBC驱动程序的数据库Postg…

Android之ndk编译出现这个错误error: unused variable ‘a‘ [-Werror=unused-variable]

1、问题 在jni里面就加了一行代码 编译的时候出现这个错误 error: unused variable a [-Werrorunused-variable] 2、解决办法 找到相应的Makefile文件 LOCAL_CFLAGS -Wall -Werror 去掉上面的 -Werror&#xff0c;改成如下 LOCAL_CFLAGS -Wall 就可以了

ELK 中的elasticsearch 集群的部署

本文内容 背景ES集群中第一个master节点ES slave节点本文总结 Elasticsearch&#xff08;以下简称ES&#xff09;搭建集群的经验。以 Elasticsearch-rtf-2.2.1 版本为例。 我搭过三个集群&#xff1a;研究ELK时搭了一个&#xff1b;测试环境搭了一个&#xff1b;生产环境搭了一…

Group Box组合框的简单使用 [大三TJB_708]

http://blog.csdn.net/misskissc/article/details/9317783 Group Box组合框的简单使用 [大三TJB_708] 转载于:https://www.cnblogs.com/chuangyiyuan/p/4885637.html

.NetCore中EF Core为迁移的数据库表统一添加前缀

在项目开发的过程中我们往往需要将项目数据库中的表添加一个统一的前缀。我们为什么要添加表前缀呢&#xff1f;有的可能是公司规定&#xff0c;更多的原因是项目和业务的区分。每个项目针对不同的需求或业务场景&#xff0c;追加相应的标识。当项目到达一定规模后&#xff0c;…

Java对象生命周期

目录 1. 创建阶段(Created)2. 应用阶段(In Use)3. 不可见阶段(Invisible)4. 不可达阶段(Unreachable)5. 收集阶段(Collected)6. 终结阶段7. 对象空间的重新分配1. 创建阶段(Created) 为对象分配存储空间开始构造对象从父类到子类对static成员进行初始化父类成员变量按照顺序初始…

C和指针之动态内存分配常见问题和总结

1、动态内存分配常见问题 1) 结构体成员指针未初始化 2)为指针分配内存太小 3)内存分配成功,但是没初始化 4)内存越界,内存泄漏,free多次或者释放之后没有设置为NULL 2、测试代码 #include <stdio.h> #include <stdlib.h> #inclu…

echarty轴自定义显示不全_表格打印不全怎么办?这招超简单!

私信回复关键词【福利】~获取丰富办公资源&#xff0c;助你高效办公早下班&#xff01;大家好&#xff0c;我是小E~最近&#xff0c;秋叶 Excel 学习班花生 同学&#xff0c;从同事那里收到了一份开会要用的表格&#xff0c;需要马上就要打印出来。会议主题是&#xff0c;从五个…

Xcode命令行生成Bitcode静态库

近两三年一直在做静态库开发 1、在Xcode工程中创建静态库的Target&#xff0c;最初是手动Build出真机的.a文件&#xff0c;模拟器的.a文件&#xff0c;然后再用命令行合并 2、后来一些特殊的开发者&#xff0c;要求加入特殊的功能&#xff0c;或者开放特殊的接口和属性&#xf…

app接口开发(php)

1.JSON方式封装通信接口&#xff1a; 封装&#xff1a; response.php <?php // JSON方式封装通信接口 // 定义 response类 class Response {// 定义一个静态方法,作用&#xff1a;按json方式产生数据 // 规范通信数据&#xff1a;参数一:状态码,参数二:消息提示(初始值为空…