当使用C/C++构建在Linux上访问MySQL数据库的应用程序时,我必须动态链接到mysql客户端库。有没有一种方法可以静态链接应用程序,以便不再需要mysql客户端库?MySQL和C应用程序
有关C \ C++开发的最佳做法是将相当长的查询包含在应用程序中但在代码之外?使用存储过程不可能,因为数据库在MySQL 4服务器上运行。
当使用C/C++构建在Linux上访问MySQL数据库的应用程序时,我必须动态链接到mysql客户端库。有没有一种方法可以静态链接应用程序,以便不再需要mysql客户端库?MySQL和C应用程序
有关C \ C++开发的最佳做法是将相当长的查询包含在应用程序中但在代码之外?使用存储过程不可能,因为数据库在MySQL 4服务器上运行。
应该很容易创建静态mysql客户端库。如果你下载了源代码,你只需要确保你正确配置它: ./configure --enable-static 这应该构建libmysql/libmysqlclient.a(或可能是libmysql/.libs/libmysqlclient.a),它应该是易于静态链接到您的可执行文件。
您将需要您的可执行文件在GPL下获得许可,否则您需要从MySQL人员处购买适当的许可证。
以下编译命令行工作对我来说静态链接mysql客户端库:
gcc -I/usr/include/mysql -c mysql.c
gcc -o mysql mysql.o -static -lmysqlclient -static-libgcc -lm -lz -lpthread
不过,我收到了以下警告,这可能是也可能不是你的问题。这似乎是说目标机器与构建机器具有相同的glibc版本。
/usr/lib/gcc/i486-linux-gnu/4.2.4/../../../../lib/libmysqlclient.a(mf_pack.o): In function `unpack_dirname':
(.text+0x6cc): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/i486-linux-gnu/4.2.4/../../../../lib/libmysqlclient.a(libmysql.o): In function `read_user_name':
(.text+0x5ed7): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/i486-linux-gnu/4.2.4/../../../../lib/libmysqlclient.a(mf_pack.o): In function `unpack_dirname':
(.text+0x6e1): warning: Using 'endpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/i486-linux-gnu/4.2.4/../../../../lib/libmysqlclient.a(my_gethostbyname.o): In function `my_gethostbyname_r':
(.text+0x3c): warning: Using 'gethostbyname_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/i486-linux-gnu/4.2.4/../../../../lib/libmysqlclient.a(libmysql.o): In function `mysql_server_init':
(.text+0x695d): warning: Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
请把它分成两个问题 – Alnitak 2008-11-21 22:41:51