首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一文带你了解静态库和动态库

最终没有任何未解析的符号,编译链接完成 那如果将-lm放在前面,又是怎样的情况呢?...链接器从左往右扫描可重定位目标文件和静态库 扫描libm.a,由于前面没有任何未解析的符号,因此不会提取任何代码 扫描main.o,发现未解析的符号exp 扫描结束,还有一个未解析的符号,因此编译链接报错...由于最终生成的可执行文件中已经包含了exp相关的二进制代码,因此这个可执行文件在一个没有libm.alinux系统中也能正常运行。....6 (0x00007fe963ef5000) /lib64/ld-linux-x86-64.so.2 (0x00007fe9645c8000) 正因为我们并没有把libm.so中的二进制代码“...拷贝”可执行文件中,我们的程序在其他没有上面的动态库时,将无法正常运行。

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    linux为什么没有病毒

    linux不是没有病毒,而是病毒少。...病毒少的原因:1、Linux账号有限制,即使这个病毒成功地感染了这个用户拥有的一个程序,由于这个用户权限受限,它进一步传播的任务也会非常困难;2、Linux网络有限制,其网络程序构建地很保守,没有让病毒快速传播变的可能的高级宏工具...Linux教学 本教程操作环境:linux7.3系统、Dell G3电脑。 linux不是没有病毒,而是病毒少。 那么为什么Linux系统下病毒这么少?...Linux网络限制 Linux 网络程序构建地很保守,没有使现在 Windows 病毒如此快速传播变的可能的高级宏工具。...我们没有看到一个真正的 Linux 病毒疯狂传播,原因就在于存在的 Linux 病毒中没有一个能够在 Linux 提供的敌对的环境中茁壮成长 以上就是linux为什么没有病毒的详细内容,更多请关注编程笔记其它相关文章

    4.9K10

    没有Linux服务器,该如何学习Linux呢?

    有了环境,接下来就是学习Linux,接下来的文章是从新手的角度出发,推荐一些Linux的学习网站。...2、Linux学习网站 Linux入门其实是很简单的,问题是你是否能有足够的耐心,花相应的时间和精力来折腾。...以下我大概整理的网站 2.1 菜鸟教程 地址:https://www.runoob.com/linux/linux-tutorial.html 这个网站无需多说,不仅是Linux,任何你想学的计算机课程都能在这里找到...image-20210731175046394 2.4 Linux中国 地址:https://linux.cn/ 这是一个关于Linux的资讯网站,网站提供了各种关于Linux的资讯你都可以在这里找到...image-20210731174805671 2.5 Linux公社 地址:https://www.linuxidc.com/ 这也是一个Linux资讯网站,里面同样可以找到很多关于Linux的相关文章

    4.5K00

    linux7 没有dpkg,Linux 系统操作 (7):dpkg 命令

    Linux 系统操作 (7):dpkg 命令 文章目录 综述: 安装命令: 查看与搜索命令: 删除命令: 不太常用的命令: 参考文献: 综述: 广义的 Debian 是指一个致力于创建自由操作系统的合作组织及其作品..., 由于 Debian 项目众多内核分支中以 Linux 宏内核为主, 而且 Debian 开发者 所创建的操作系统中绝大部分基础工具来自于 GNU 工程 , 因此 “Debian” 常指 Debian...GNU/Linux.dpkg 是一个 Debian 的一个命令行工具, 它可以用来安装, 删除, 构建和管理 Debian 的软件包....示例: dpkg -unpack avg71flm_r28-1_i386.deb 重新配置和释放软件包 dpkg -configure package_file 如果和 – a 一起使用, 将配置所有没有配置的软件包

    5.7K30

    linux 没有root权限的用户安装GCC

    Linux下,如果有root权限的话,使用sudo apt install 就可以很方便的安装软件,而且同时也会帮你把一些依赖文件也给编译安装好。...但是如果不是用的自己的机器,一般情况下是没有root 权限的。所以就需要自己动手下载tar文件,解压安装。在安装中遇到的最大的问题是依赖的问题。...因为是没有root权限的,所以需要修改安装路径,安装到自己有权限的文件夹下。 如果前一步没有问题,使用make -j4 编译,使用-j 选项可以加快编译速度 最后使用 make install。...不过由于系统中有旧版本的GCC,但是由于没有ROOT权限,所以不能将旧版本卸载掉,所以需要添加的自己的path中。 在这之前,先看一下GCC能不能用,图中,下面的GCC 7.2.0就是新安装的GCC。...解决方法是,在~下的.bashrc 中编辑export LD_LIBRARY_PATH 之后再source .bashrc就可以了 参考: GNU/Linux GCC 指定动态库路径_牧马人_新浪博客

    12.7K10

    巧用NULL模式解耦依赖

    由于需求的变化,应用B需要库libM.a的能力,以便和服务M交互。为了复用和简化,通过类A间接提供,应用B不用修改代码,只需要重新编译即可获得新的能力,其它用到类A的应用也是如此。 ?...方法二:使用NULL模式 这种方法扩展性更好,新增其它的依赖也能应付,已有或不需要新特性的完全不需要修改,编译不受影响,不会被迫依赖libM.a。...和Server M交互 } virtual void method2() { // 调用libM.a和Server M交互 } }; // 原类A class A { public: // 新增默认参数..._x->method1(); } void method2() { _x->method2(); } private: IX* _x; }; // 对于应用A,不用修改任何代码,而且编译时不需要依赖libM.a...// 对于应用B,需要微修改,并编译时指定库libM.a和Server void ApplicatonB::f() { CMX* x = new CMX; A a(x); a.method1(); }

    52630

    浅析Makefile、make、cmake

    如果你是在Linux下做开发,你就必须知道Makefile是什么东西,如果不知道那就可以说你不是一个合格的Linux开发工程师,因为Makefile是必备的一项技能。...result = sin (angle * PI / 180.0); printf ("result = %f \n", result); return 0; } 数学库的文件名就是libm.a...,gcc会根据-l后面的基本名称自动添加前缀lib和后缀.a,例如gcc test.c -o test.out -lm,m是基本名称,添加前缀后缀就变成数学库libm.a。...只要没有添加文件或者删除文件,Makefile的内容都是不需要修改的。所以使用make+Makefile极大的提高了我们的工作效率。...cmake它仍然是目标、依赖之类的抽象的东西,在Linux下,它会生成linux下的Makefile,在windows下,假如使用visual studio,它会生成visual studio使用的工程文件

    1K20

    不想装系统,有没有办法在线体验 Linux

    ,启下是想预告:从明天开始,我会在每次发文的次条加入“轻松掌握Linux命令”系列,希望从基础的命令开始,提升 Linux 技术水平,敬请期待!...今天给大家推荐几个在线就可以玩的Linux环境以及学习Shell的地方。 在线Linux环境 如果你不想安装虚拟机,这里提供几个在线就能把玩Linux的网站,他们不需要注册用户,可以直接使用。...它提供非常简单的终端环境,而且没有自带gcc等编译套件,不过练习基本命令和shell脚本还是可以的。整体使用起来也比较流畅。 cb.vu 地址: http://cb.vu/ ?...写好的脚本就是没有如预期一样运行?不如shellcheck一下? 总结 除了以上推荐的以外,还有很多类似的,这里就不一一列举了。有需要的朋友也可以直接购买云主机。不要再说没有Linux环境学习了奥!...你是如何学习Linux的,欢迎留言评论。

    4.6K11
    领券