Articles of 连接器

如何使用mysql的连接器

我想使用连接器为MySQL数据库。 我正在关注这个页面 http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html 但似乎很难。 还有其他教程吗? 请告诉我。

如何从linux进程保留特定范围的虚拟内存

i86-32位系统:有没有办法在进程内存映射中保留特定范围的虚拟地址空间,以阻止ld.so(dynamic链接器)将任何共享对象加载到该范围内? 我想使用至less2个1G的虚拟内存来映射两个1G的巨大页面,但是,ld.so在中间加载共享库,所以我不能映射1G巨大的页面。 编译器不能完成这项工作。 链接器脚本不能。 ld.so被加载器加载到可执行文件中,然后ld.so加载其他共享库。 然而,ld.so本身即使在映射空间的中间。 ld.so和libc.so的入口点位于更高的地址,对于我们的应用程序来说不能改变。 入口点地址:0x46c38810 谢谢江涛

Linux上的Netbeans连接到C中的MySQL数据库

基本上,我试图连接到一个MySQL数据库使用MySQL的连接器C驱动程序。 我正在Linux系统上的Netbeans中编写代码。 但是这里是个谜题:我可以在debugging模式下连接到我的数据库,但不能释放模式? 我在Linux上使用Netbeans作为我的IDE,并使用项目属性下的下拉菜单设置所有库和包含文件夹,因此它将这些属性应用于“debuggingconfiguration”和“发布configuration”,但是当我将它连接到数据库时在Debug中执行,但不是当我在运行时执行 – ??? 我简化了代码以显示实际的连接代码: int readDB(void) { MYSQL *mysql = NULL; char *server = "localhost"; char *user = "root"; char *password = ""; char *database = "myDB"; int port = 3306; mysql = mysql_init(mysql); if (!mysql) { puts("Init failed, out of memory?"); return EXIT_FAILURE; } else { puts("SUCCESS!\n"); } if (!mysql_real_connect(mysql,server,user,password,database,port,NULL,0)) { […]

如何禁用我的用户空间程序之一的“按需分页”?

对于一个专门的testing,我必须为我的用户空间程序中的一个禁用“按需分页” http://en.wikipedia.org/wiki/Demand_paging 任何想法我怎么能做到这一点? (embedded式Linux设备; 2.6内核)

使GNU ld或GNU gold显示使用档案中的.o文件

我试图链接一个C ++二进制文件,但我得到未定义的符号错误。 我的二进制文件不应该需要这些符号,我想了解导致链接器(GNU ld或GNU gold)的依赖链,认为它们是需要的。 有libfoo.a包含数百个.o文件。 我的程序在libfoo.a调用函数。 我想得到一个依赖关系图,其中包含链接器认为需要链接我的程序的libfoo.a中的所有.o文件。 我需要它,因为我怀疑在libfoo.a某个地方有一个错误,调用了不是真正需要的函数。 我可以修改libfoo.a的源代码(从而删除不需要的调用),为此我需要了解不需要的调用的位置。 依赖图可以帮助我find它。 请注意,由于未定义的符号,没有生成可执行文件。 请注意,我的最终目标不是构build这个特定的二进制文件,而是确保在libfoo.a中不调用不需要的函数。 我已经看过man ld ,但我找不到任何命令行标志,可以给我更详细的输出。 来自链接器的示例错误: libfoo++.a(foo1.o):foo1.cc:function foo1f: error: undefined reference to 'bar' 我怎么知道是什么导致foo1.o被链接到可执行文件? (对于我来说没问题,因为我不需要它,我的问题是foo1.o是必须的,但不应该是,我想删除导致foo1.o的调用被链接。)

指定在Linux上启动可执行文件时要使用的dynamic链接器/加载器

我有一个奇怪的Linux系统,其中大部分软件是针对Glibc和其他针对uClibc的其他软件编译的。 由于Linux是一个标准的发行版,当我启动并执行标准的dynamic连接器时,glibc会调用(/lib/ld.so.1)。 我正在寻找一种方法来指定dynamic加载器之前启动任何可执行文件,所以当我想要运行的软件是针对uClibc编译我可以定义启动机制使用uClibcdynamic加载器(/lib/ld-uClibc.so.0 )。 有任何想法吗?

将.o(C目标文件)链接到Linux上的C ++文件/项目

我有一个Linux中的.o文件的问题如下: 我有Visual.cpp调用函数ECL_Drawrect()和这个函数被定义为: #define ECL_Drawrect ECL_bDrawrect 在我的Visual.cpp中,我还包括“ecl.h”: #include "ecl.h" int main() { ECL_Drawrect (0,0,20,20,false); return 0; } 问题是ECL_bDrawrect函数在ecl.o文件中,我不知道如何链接它来使用上面提到的函数。 经过一番研究,我发现并设置如下: g++ Visual.cpp -o Visual /usr/include/ecl.o ecl.opath也包含在我的项目中,当我编译我得到这个错误: **** Build of configuration Debug for project Visual **** make all Building file: ../src/Visual.cpp Invoking: GCC C++ Compiler g++ -m32 -O0 -g3 -Wall -c -fmessage-length=0 /usr/include/ecl.o -MMD -MP -MF"src/Visual.d" -MT"src/Visual.d" -o […]

在libc和libdl中使用dlopen

如果gcc编译的程序正在调用dlopen,则必须使用-ldl选项进行编译。 这意味着这样的程序依赖libdl.so库的运行时。 实际上,通过对它进行ldd我们可以看到这样一行: libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 libc.so反过来使用dlopen(例如,处理libnss.so),但在libldl.so上执行ldd不会出现: /lib64/ld-linux-x86-64.so.2 (0x00007f5a488e4000) linux-vdso.so.1 => (0x00007fff7bdfe000) 为什么这个区别?

在Linux上DYLD_PRINT_LIBRARIES的等价物?

在OSX上,DYLD_PRINT_LIBRARIES环境variables会强制dynamic链接器在运行时打印外部库。 在Linux上有没有相当的一个?

Linux运行时链接程序错误

我正在通过POCO Project站点上的第一步教程工作,并且已经成功地在我的主目录下构build了这个库(Debian Linux,2.6.26,gcc 4.3.2) 〜/开发/ POCO 与共享库位于 〜/开发/ POCO / lib中/ Linux的/ x86_64的/ lib目录 我的问题是,我build立的任何应用程序依赖于这些库只能从共享库目录运行。 〜/ Development / POCO / lib / Linux / x86_64 $ ldd〜/ Development / Cloud / DateTimeSample / bin / Linux / x86_64 / DateTime linux-vdso.so.1 =>(0x00007fffe69fe000) libPocoFoundation.so.6(0x00007fa8de44f000) libpthread.so.0 => /lib/libpthread.so.0(0x00007fa8de233000) libdl.so.2 => /lib/libdl.so.2(0x00007fa8de02f000) librt.so.1 => /lib/librt.so.1(0x00007fa8dde26000) libstdc ++。so.6 => […]