首页 > 其他分享 >GCC实现多文件编译,静态库,动态库

GCC实现多文件编译,静态库,动态库

时间:2023-09-02 16:12:05浏览次数:36  
标签:GCC libadd 命令 静态 gcc 生成 编译 add main

GCC实现多文件编译,静态库,动态库

一 代码   //add.h int add(int a, int b);     //add.c int add(int a, int b) {     return a+b; }     //main.c   #include <stdio.h> #include "add.h"   void main() {      printf("3 + 2 = %d\n",add(3+2)); }   二 多文件编译 1 生成.o文件 命令:gcc -c add.c main.c 生成:add.o,main.o   2 生成可运行文件 命令:gcc -o main add.o main.o 生成:main   3 执行 命令:./main 输出:3 + 2 = 5   二 静态库 1 生成.o文件 命令:gcc -c add.c 生成:add.o   2 生成libxxx.a 命令:ar rcs libadd.a add.o 生成:libadd.a   3 生成可运行文件 命令:gcc -o main main.c -static -L. -ladd 生成:main   4 执行 命令:./main 输出:3 + 2 = 5   三 动态库 1 生成.o文件 命令:gcc -c add.c 生成:add.o   2 生成libxxx.so 命令:gcc -shared -fPIC -o libadd.so add.o 生成:libadd.so   3 动态库路径 方法一:将文件拷贝到文件夹/usr/lib中 命令:mv libadd.so /usr/lib   方法二:设置LD_LIBRARY_PATH为当前文件夹 命令:export LD_LIBRARY_PATH=$(pwd)   4 生成可运行文件 命令:gcc -o main main.c -L. -ladd 生成:main   #假设没有第3步。会报错:找不到libadd.so   5 执行 命令:./main 输出:3 + 2 = 5     四 Makefile文件 #mf:mult file
#liba: liaxxx.a
#libso:libxxx.so

run:main
        ./main
mfo:add.c main.c
        gcc -c add.c main.c
mfe:mfo
        gcc -o main add.o main.o
libo:add.c
        gcc -c add.c
liba:libo
        ar rcs libadd.a add.o
libae:liba
        gcc -o main main.c -static -L. -ladd
libso:libo
        gcc -shared -fPIC -o libadd.so add.o
libsoe:libso
        export LD_LIBRARY_PATH=$(pwd)
        gcc -o main main.c -L. -ladd

标签:GCC,libadd,命令,静态,gcc,生成,编译,add,main
From: https://www.cnblogs.com/jiftle/p/17673794.html

相关文章

  • 如何在CMAKE中指定python路径——使用cmake为python编译扩展模块时指定python路径
     答案:cmake-DPython3_EXECUTABLE=/path/to/bin/python3   =================================================    参考:https://stackoverflow.com/questions/49908989/cmake-cant-find-python3   =================================== ......
  • windows10,编译rust程序到so文件,供android调用,笔记
    1、用D:\myProgram\android_sdk\ndk\ndk-22.0.7026061\ndk-build.cmd编译,全路径,只写ndk-build,似乎不行2、在androidas里编译,提示soisnotaABI,其实是so放错地方了。应该放在src\main\jniLibs\arm64-v8a目录下(其他cpu类似),我就是缺少arm64-v8a目录,导致这个错误,新建arm64-v8......
  • CLion进行远程/本地编译、GDB调试postgres(含阅读源码)
    Clion-RemoteGDB调试postgres(本地为windows,远程为centos)通过Make+Makefile编译,并构建索引下面一步一步跟着做即可下载源码压缩包、编译postgres的源码:使用Clion调试postgresql源码-知乎(zhihu.com)(系统用户的配置文件是~/.zshrc)下载源码压缩包、编译postgres的源码:Lin......
  • 从源码编译OpenCV
    从源码编译的原因官方已经有编译好的包可下载:https://opencv.org/releases/但是在iOS项目中集成官方编译的pack(目前为4.8.0),出现以下错误:ld:in/.../opencv2.framework/opencv2(opencl_kernels_calib3d.o),buildingforiOSSimulator,butlinkinginobjectfilebuiltf......
  • 第一章 静态分析
    Lab1-11、查看文件编译时间使用PE-bear2、查看文件是否加壳使用PEiD3、查看文件导入函数来确定程序的基本功能使用PE-bear4、使用strings.exe查看可打印字符5、使用Restorator查看文件资源......
  • freeswitch 在visualstudio 2017 中编译运行
    1、visualstudio使用2017版本的2、下载 https://github.com/PerkinsZhu/freeswitch/tree/v1.8 源码   错误处理:一、 下载地址:https://wixtoolset.gallerycdn.vsassets.io/extensions/wixtoolset/wixtoolsetvisualstudio2017extension/1.0.0.22/1668223938167/......
  • redis7.2.0 centos源码编译安装并设置开机自启动
    下载源码包wgethttps://github.com/redis/redis/archive/7.2.0.tar.gztar-zxf7.2.0.tar.gz编译编码编译编码cdredis-7.2.0make&&makeinstall此时默认redis-serverredis-cli等命令行安装到目录/usr/local/bin/目录中。如果你想安装命令行到指定目录中你可以指定......
  • 服务器Nginx环境如何配置WordPress伪静态规则
    WordPress伪静态是指将动态生成的WordPress网站页面的URL转换为静态的URL,以便于搜索引擎优化和提高用户访问体验。与动态URL相比,静态URL更容易被搜索引擎索引,因为它们更具可读性和可理解性,同时也更容易被用户记住和分享。最近看到有粉丝在问服务器Nginx环境下如何配置......
  • 树莓派-内核开发-说明 下载代码 编译 替换内核
    一、概述二、ubuntu里交叉编译1、获取交叉编译工具和源码2、配置编译环境变量2.1手动配置环境变量2.2自动配置环境变量3、配置config3.1使用源码里自带的config3.2获取当前树莓派的config4、编译5、挂载树莓派sd卡,并安装编译出的DIRECTLY到sd卡三、树......
  • 使用clion阅读任意交叉编译软件的代码
    clion是linux下比较强大的C/C++IDE,通过扩展也可以支持很多其他语言,例如shell,lua,perl,python,rust。唯一缺点是收费,但是相对它给我带来的便利,这点费用不算什么。我一般用来开发C/C++/项目,它支持3种方式解析工程源码,分别是MakefileCMake编译数据库像代码的高亮,跳转,补全,都......