Ubuntu 使用C++ ORM框架--ODB
2017-05-08 09:25
267 查看
系统环境: Ubuntu12.04 Server
1.安装必要软件,库
2.下载
http://www.codesynthesis.com/products/odb/download.xhtml
odb-2.4.0.tar.gz
libodb-2.4.0.tar.gz
libodb-mysql-2.4.0.tar.gz
3.解压
创建一个目录
将下载的3个tar.gz的包放到目录下
解压
4.安装
安装libodb-2.4.0
安装libodb-mysql-2.4.0
安装odb-2.4.0
安装 libcutl-1.10.0
去官网下载libcutl-1.10.0.tar.gz http://www.codesynthesis.com/projects/libcutl/
libcutl 安装成功后, 继续安装odb-2.4.0
没报错 , odb安装成功
http://scm.codesynthesis.com/?p=odb/odb-examples.git;a=tree;f=hello;hb=HEAD
命令行执行
报错
创建libcutl-1.10.so的软连接
再次执行 生成4个文件
修改driver.cxx文件
原代码:
修改为
创建数据库
修改 person.sql
创建表
执行
执行成功,生成执行档 driver
ODB简介 :
ODB是用于C ++的开源,跨平台和跨数据库对象关系映射(ORM)系统。 它允许您将C ++对象保留到关系数据库,而无需处理表,列或SQL,而无需手动编写任何映射代码。 ODB支持MySQL,SQLite,PostgreSQL,Oracle和Microsoft SQL Server关系数据库以及C ++ 98/03和C ++ 11语言标准。 它还带有Boost和Qt的可选配置文件,允许您在持久的C ++类中无缝地使用这些库中的值类型,容器和智能指针。一 .安装
因为我这是一台纯净的ubuntu, 所以很多软件,库都没安装, 如果有的话可以忽略1.安装必要软件,库
apt-get install gcc g++ mysql-server libmysqlclient-dev make -y
2.下载
http://www.codesynthesis.com/products/odb/download.xhtml
odb-2.4.0.tar.gz
libodb-2.4.0.tar.gz
libodb-mysql-2.4.0.tar.gz
3.解压
创建一个目录
将下载的3个tar.gz的包放到目录下
解压
mkdir odb mv odb-2.4.0.tar.gz libodb-2.4.0.tar.gz libodb-mysql-2.4.0.tar.gz odb cd odb tar -xf odb-2.4.0.tar.gz tar -xf libodb-2.4.0.tar.gz tar -xf libodb-mysql-2.4.0.tar.gz
4.安装
安装libodb-2.4.0
cd libodb-2.4.0 ./configure make make install
安装libodb-mysql-2.4.0
cd libodb-mysql-2.4.0 ./configure make make install
安装odb-2.4.0
cd odb-2.4.0 ./configure ### 报错 configure: error: g++ does not support plugins; reconfigure GCC with --enable-plugin gcc -v ### 查看一下gcc 版本 我这里是4.6 下面就 安装4.6版本的dev包 apt-get install gcc-4.6-plugin-dev ### 安装完再次运行 ./configure ### 报错 configure: error: libcutl is not found; consider using --with-libcutl=DIR
安装 libcutl-1.10.0
去官网下载libcutl-1.10.0.tar.gz http://www.codesynthesis.com/projects/libcutl/
### 解压 tar -xvf libcutl-1.10.0.tar.gz ### 安装 ./configure make make install
libcutl 安装成功后, 继续安装odb-2.4.0
./confgiure make make install
没报错 , odb安装成功
二.使用
使用官方的helloworld 例子http://scm.codesynthesis.com/?p=odb/odb-examples.git;a=tree;f=hello;hb=HEAD
命令行执行
odb -d mysql --generate-query --generate-schema person.hxx
报错
odb: error while loading shared libraries: libcutl-1.10.so: cannot open shared object file: No such file or directory 原因是,在安装libcutl的时候, configure没有指定prefix, 找不到该so文件
创建libcutl-1.10.so的软连接
ln -s /usr/local/lib/libcutl-1.10.so /usr/lib/libcutl-1.10.so
再次执行 生成4个文件
-rw-r--r-- 1 root root 8754 May 5 17:56 person-odb.hxx -rw-r--r-- 1 root root 311 May 5 17:56 person.sql -rw-r--r-- 1 root root 1487 May 5 17:56 person-odb.ixx -rw-r--r-- 1 root root 21752 May 5 17:56 person-odb.cxx
修改driver.cxx文件
原代码:
auto_ptr<database> db (create_database (argc, argv));
修改为
auto_ptr<odb::database> db ( new odb::mysql::database ( "root" //user ,"123456" //passwd ,"test" // database ,"localhost" ,3306 ));
创建数据库
mysql -u root -p'123456' -e 'create database test'
修改 person.sql
1 /* This file was generated by ODB, object-relational mapping (ORM) 2 * compiler for C++. 3 */ 4 use test; 5 DROP TABLE IF EXISTS `person`; 6 7 CREATE TABLE `person` ( 8 `id` BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 9 `first` TEXT NOT NULL, 10 `last` TEXT NOT NULL, 11 `age` SMALLINT UNSIGNED NOT NULL) 12 ENGINE=InnoDB; 13
创建表
mysql -uroot -p'123456' < person.sql
执行
c++ -c person-odb.cxx c++ -DDATABASE_MYSQL -c driver.cxx c++ -o driver driver.o person-odb.o -lodb-mysql -lodb
执行成功,生成执行档 driver
root@ubuntu:~/code/hello# ./driver Hello, John Doe! Hello, Jane Doe! count : 3 min age: 31 max age: 33
相关文章推荐
- 如何在Ubuntu中使用Eclipse + CDT开发C/C++程序
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- [转]Ubuntu 12.04 使用Eclipse搭建C/C++编译环境
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu 下使用 C++ boost 库
- [转]Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu使用点滴(3)-C/C++开发环境配置
- ubuntu下使用eclipse编译C++
- Boost-Ubuntu上编译与安装并在eclipse C/C++中使用
- Ubuntu编译安装boost并在eclipse C/C++中使用
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu使用点滴(3)-C/C++开发环境配置
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu使用eclipse搭建c/c++编译环境----CDT插件
- Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤
- Ubuntu 12.04 使用Eclipse搭建C/C++编译环境