DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  gcc/g++/gdb

上一页 1 2 3 4 下一页

摘要:相关博文1:http://blog.chinaunix.net/uid-20682147-id-76330.html相关博文:http://blog.chinaunix.net/uid-20682147-id-5096676.html假设有如三个源代码文件: $ cat a.cpp void a() 阅读全文
posted @ 2020-10-13 13:44 DoubleLi 阅读(348) 评论(0) 推荐(0) 编辑

摘要:GCC或G++在编译链接时,如果命令行中含有库,则要特别注意了。根据《C专家编程》5.3节中的提示,GCC在链接时对命令行时的处理顺序是从左到右。证据是GCC的MAN: -l library Search the library named library when linking. (The se 阅读全文
posted @ 2020-10-13 13:39 DoubleLi 阅读(515) 评论(0) 推荐(0) 编辑

摘要:场景是这样的。我在写一个Nginx模块,该模块使用了MySQL的C客户端接口库libmysqlclient,当然mysqlclient还引用了其他的库,比如libm, libz, libcrypto等等。对于使用mysqlclient的代码来说,需要关心的只是mysqlclient引用到的动态库。大 阅读全文
posted @ 2019-01-09 17:29 DoubleLi 阅读(2061) 评论(0) 推荐(0) 编辑

摘要:./configure CFLAGS=" -g " ./configure CFLAGS=" -g " 当然,c++代码就把 CFALGS 改成 CPPFLAGS 阅读全文
posted @ 2019-01-09 14:02 DoubleLi 阅读(342) 评论(0) 推荐(0) 编辑

摘要:1.库的分类 根据链接时期的不同,库又有静态库和动态库之分。 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。 有别于静态库,动态库的链接是在程序执行的时候被链接的。所以,即使程序编译完,库仍须保留在系统上,以供程 阅读全文
posted @ 2019-01-09 10:33 DoubleLi 阅读(476) 评论(0) 推荐(0) 编辑

摘要:一、简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并解压 wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4 阅读全文
posted @ 2017-05-04 10:24 DoubleLi 阅读(423) 评论(0) 推荐(0) 编辑

摘要:除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词):用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdynamic”指定链接共享库,使用示例:-Wl,-Bstatic -lmysqlclient_r -ls 阅读全文
posted @ 2016-12-21 11:27 DoubleLi 阅读(16436) 评论(0) 推荐(0) 编辑

摘要:so文件:动态库a文件: 静态库exe文件:可执行程序(linux下以文件属性来标示是否是可执行文件,与后缀名无关)经过自己写的一些测试程序,大致了解了下gcc中链接顺序问题,总结出以下几点:1,动态库中可以包含另一个静态库,通过参数 -lxxx 把静态库libxxx.a加入so文件中,这样so文件 阅读全文
posted @ 2016-12-21 10:36 DoubleLi 阅读(1003) 评论(0) 推荐(1) 编辑

摘要:我的环境: centos6 x64. gcc4.4.7 在使用gcc/g++ 编译程序时我们希望指向一些库是使用静态的链接方式. 另外的一些是动态的方式. 我以boost 为例. 如果我们要使用静态库则是这样的: # g++ main.cpp -lpthread /usr/lib64/libboos 阅读全文
posted @ 2016-12-21 10:31 DoubleLi 阅读(825) 评论(0) 推荐(0) 编辑

摘要:一 在应用程序需要连接外部库的情况下,linux默认对库的连接是使用动态库,在找不到动态库的情况下再选择静态库。使用方式为: gcc test.cpp -L. -ltestlib 如果当前目录有两个库libtestlib.so libtestlib.a 则肯定是连接libtestlib.so。如果要 阅读全文
posted @ 2016-12-21 10:04 DoubleLi 阅读(8037) 评论(0) 推荐(2) 编辑

摘要:// a.h extern void foo(); // a.cpp #include <stdio.h> void foo() { printf("foo\n"); } // x.cpp #include "a.h" int main() { foo(); return 0; } // Makef 阅读全文
posted @ 2016-12-21 09:46 DoubleLi 阅读(1159) 评论(0) 推荐(0) 编辑

摘要:遇到如下情况,主程序通过dlopen来打开.so文件,但是.so用到了主程序的log函数。 编译so时,通过引用主程序头文件来编译通过,头文件有log函数声明: extern "C" { void print() } 在主程序的.c文件里有函数的具体实现。 但是dlopen后运行so中函数时,出现找 阅读全文
posted @ 2016-12-20 17:13 DoubleLi 阅读(2258) 评论(0) 推荐(0) 编辑

摘要:首先 --whole-archive 和 --no-whole-archive 是ld专有的命令行参数,gcc 并不认识,要通gcc传递到 ld,需要在他们前面加 -Wl,字串。 --whole-archive 可以把 在其后面出现的静态库包含的函数和变量输出到动态库,--no-whole-arch 阅读全文
posted @ 2016-12-20 17:06 DoubleLi 阅读(2829) 评论(0) 推荐(0) 编辑

摘要:转自:http://www.firekyrin.com/archives/597.html 编译选项 让我们先看看 Makefile 规则中的编译命令通常是怎么写的。 大多数软件包遵守如下约定俗成的规范: 让我们先看看 Makefile 规则中的编译命令通常是怎么写的。 大多数软件包遵守如下约定俗成 阅读全文
posted @ 2016-11-16 10:21 DoubleLi 阅读(35525) 评论(0) 推荐(1) 编辑

摘要:众所周知,Gcc编译的原始程序一般很大,其实有几种方法能大大减小目标代码的体积,一般有以下几种方法。 基本知识来源:http://www.mingw.org/wiki/Large_executables 1、禁用调试信息 Release编译时不要加上-g开关。 2、使用-Os编译程序。 不要使用-f 阅读全文
posted @ 2016-11-08 11:31 DoubleLi 阅读(2699) 评论(0) 推荐(0) 编辑

摘要:1 库的分类 根据链接时期的不同,库又有静态库和动态库之分。 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。 有别于静态库,动态库的链接是在程序执行的时候被链接的。所以,即使程序编译完,库仍须保留在系统上,以供程 阅读全文
posted @ 2016-08-24 11:48 DoubleLi 阅读(4280) 评论(0) 推荐(0) 编辑

摘要:一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序。采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。 Gdbserver在目标系统中运行,gdb则在宿主机上 阅读全文
posted @ 2016-07-06 08:35 DoubleLi 阅读(1669) 评论(0) 推荐(0) 编辑

摘要:安装GDB和GDBSERVER 转自http://www.360doc.com/content/10/0407/17/155970_21971613.shtml 把GDBSERVER装入文件系统 转自http://www.arm9home.net/read.php?tid-1396.html 在mi 阅读全文
posted @ 2016-07-06 08:34 DoubleLi 阅读(2106) 评论(0) 推荐(0) 编辑

摘要:PC主机:Ubuntu 10.4 目标板:TQ2440开发板,linux内核2.6.30 NOTE:为了使用gdb进行调试,强烈建议使用nfs服务,否则调试会非常麻烦。 使用nfs服务可以参考:S3C2440挂载NFS文件系统 1. 概述 所谓远程调试,就是开发板上建立一个gdb服务端,同时待调试的 阅读全文
posted @ 2016-07-06 08:32 DoubleLi 阅读(10739) 评论(0) 推荐(1) 编辑

摘要:/********************************************************************* * Author : Samson * Date : 01/30/2015 * Test platform: * 3.13.0-24-generic * GN 阅读全文
posted @ 2016-07-06 08:32 DoubleLi 阅读(1781) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 下一页