C++ MySQL和C应用程序

C++ MySQL和C应用程序,c++,c,linux,coding-style,mysql4,C++,C,Linux,Coding Style,Mysql4,在使用C/C++在linux上构建访问MySQL数据库的应用程序时,我必须动态链接到MySQL客户端库。是否有一种方法可以静态链接应用程序,从而不再需要mysql客户端库 关于C\C++开发,在应用程序中但在代码之外包含较长查询的最佳实践是什么?使用存储过程是不可能的,因为数据库运行在MySQL 4服务器上。创建静态MySQL客户端libs应该很容易。如果下载了源代码,只需确保对其进行了适当的配置: ./configure—启用静态 这应该构建libmysql/libmysqlclient.a(

在使用C/C++在linux上构建访问MySQL数据库的应用程序时,我必须动态链接到MySQL客户端库。是否有一种方法可以静态链接应用程序,从而不再需要mysql客户端库


关于C\C++开发,在应用程序中但在代码之外包含较长查询的最佳实践是什么?使用存储过程是不可能的,因为数据库运行在MySQL 4服务器上。

创建静态MySQL客户端libs应该很容易。如果下载了源代码,只需确保对其进行了适当的配置: ./configure—启用静态 这应该构建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

请把这个分成两个问题