MakeFile编写

2023-11-12

1. 生成静态库和动态库

文件:makefile  test.cpp  test.h

lib := $(PWD)/../../libs/libtest.a
so := $(PWD)/../../libs/libtest.so

all : ${lib} ${so}

${lib} : test.o
    ar rcs ${lib} test.o

${so} : test.o
    gcc -shared -fPIC -o ${so} test.o

test.o : test.cpp test.h
    gcc -c test.cpp -o test.o

2. 调用静态库或动态库

HEAR := -I include
LIB := -L libs 

obj = main.o

main : $(obj)
    gcc ${obj} -o main ${LIB} -ltest

main.o : main.cpp include/zhy/test.h
    gcc -c main.cpp -o main.o ${HEAR}

clean:
    rm -rf main main.o

注:动态库需要 export LD_LIBRARY_PATH=./libs/

3.进阶

Makefile教程(绝对经典,所有问题看这一篇足够了)_GUYUEZHICHENG的博客-CSDN博客_makefile

参考:

linux编程入门(六)-编写Makefile文件 - 简书

Linux基础——gcc编译、静态库与动态库(共享库)_daidaihema的博客-CSDN博客_gcc 动态库编译

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MakeFile编写 的相关文章

  • Pthreads - 高内存使用率

    我正在用 C 编写一些东西 在 256Mb 系统上的 Linux 中创建大量 Pthread 我通常有 200Mb 的免费空间 当我使用少量线程运行该程序时 它可以工作 但是一旦我让它创建大约 100 个线程 它就会出现错误 因为系统内存不
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 如何在Linux上用C/C++编写Web服务器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在考虑在 Linux 平台上开发一个小型 阅读 初级 Web 服务器 但我不知道从哪里开始 我希望它能够做的是 监听特定端口 接受
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • 如何在C(Linux utf8终端)中打印“盒子抽屉”Unicode字符?

    我正在尝试显示 方框图范围 2500 257F 中的 Unicode 字符 它应该是标准 utf8 Unicode 标准 版本 6 2 我根本做不到 我首先尝试使用旧的 ASCII 字符 但 Linux 终端以 utf8 显示 并且没有显示
  • Vagrant 遇到问题 - “404 - 未找到”

    我正在尝试使用 Vagrant 制作一个 LAMP 盒子 有人告诉我它使用起来非常简单 我对网络和虚拟机完全陌生 对 Linux Ubuntu 的经验也很少 我目前已尝试按照官方文档页面上的教程进行操作 http docs vagrantu
  • 更新Linux中的包含路径

    我的 my path to file 文件夹中有几个头文件 我知道如何将这些文件包含在新的 C 程序中 但每次我都需要在包含它之前输入头文件的完整路径 我可以在linux中设置一些路径变量 以便它自动查找头文件吗 您可以创建一个 makef
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • 如何将 OpenCV 的测试框架与 CMake 结合使用?

    好像 OpenCV 有一个测试框架 https github com Itseez opencv tree ef91d7e8830c36785f0b6fdbf2045da48413dd76 modules ts include opencv
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in

随机推荐

  • Eclipse 导入Go项目

    用Eclipse开发Java的程序员 一想到导入项目 首先是Import 但是发现点击import后 导入不了go项目 所以采用新建的方式来导入Go项目 这个前提是要搭建好Eclipse中Go开发环境 这些有很多可以百度 这里只描述Go项目
  • 发布依赖到maven中央仓库

    目录 前言 一 jira 1 注册 2 新建问题 3 新建关键表单配置 4 问题页面 5 Group id 对应的 域名认证 二 gpg秘钥配置 1gpg下载 三 maven项目配置 也可以看官方文档 1 setting xml 2 pom
  • Linux 查看服务器内存、CPU 命令

    1 服务器CPU情况 cat 1 查看物理CPU个数 Procs 进程 cat proc cpuinfo grep physical id sort uniq wc l 2 查看服务器CPU内核个数 cat proc cpuinfo gre
  • 关于若依框架中v-hasRole/v-hasPermi作用到el-table-column中无法生效问题

    在某些情况下 它是不适合使用v hasPermi 如元素标签组件 只能通过手动设置v if 可以使用全局权限判断函数 用法和指令 v hasPermi 类似
  • 静态链表基本操作

    增 删 查找位序下标 查找空元素操作 next 1为表最后一个元素 next 2为空元素 define CRT SECURE NO WARNINGS include
  • 如何选择合适的 API 网关

    如今 API 网关是设计具有多个 API 服务或微服务的分布式系统架构的重要组成部分 这篇文章帮助您了解什么是 API 网关 何时以及为何使用它 并指导您如何为您的应用程序选择最佳的 API 网关解决方案 什么是 API 网关 API 网关
  • 06-Java框架-SpringBoot

    一 SpringBoot介绍 之前为了搭建一个SSM的项目 需要导入各种jar包和添加各种xml的配置 相对来时是较为复杂的 SpringBoot倡导的是几乎0配置搭建Spring应用 官网 https spring io projects
  • 卷麻了,新来的00后实在是太卷了...

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • 数据结构知识点总结

    一 顺序表和链表 1 顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构 一般情况下采用数组存储 在数组 上完成数据的增删查改 静态顺序表 使用定长数组存储 动态顺序表 使用动态开辟的数组存储 常用 2 链表 链表是一种
  • node settings must not contain any index level settings

    本人安装的ES是7 6 1版本 报错意思为 节点设置不能包含任何索引级别设置 也就是说报错是因为 在elasticsearce yml文件中对索引进行了配置 应该是新版本不支持这样配置 删除相应的索引配置即可 index refresh i
  • 浏览器H5获取地理位置api——navigator.geolocation

    地理位置 API Geolocation API 允许用户向 web 应用程序提供他们的位置 出于隐私考虑 报告地理位置前会先请求用户许可 PS 出于安全考虑 当网页请求获取用户位置信息时 用户会被提示进行授权 注意不同浏览器在请求权限时有
  • Docker报错(Error): Layer already exists如何处理

    作者 变优秀的小白 Github 关注YX XiaoBai 爱好 Americano More Ice QQ学习交流群 new 811792998 Error Layer already exists 当你修改了源码 准备docker pu
  • 从程序员的角度设计一个Java的神经网络

    欢迎大家前往云 社区 获取更多海量技术实践干货哦 来自维基百科 人工神经网络 ANN 或连接系统是受生物神经网络启发构成生物大脑的计算系统 这样的系统通过考虑例子来学习 逐步提高性能 来完成任务 通常没有任务特定的编程 用Java或任何其他
  • 什么是GameFi?如何理解这一概念?

    GameFi的爆火是区块链在项目创新和概念创新方面具有先天优势的体现 时至今日 GameFi已经成为继DeFi之后的又一大行业热词 那么该怎么理解GameFi概念 GameFi又具有什么优势呢 01 GameFi是什么 如果说DeFi是把现
  • JVM笔记 -- JVM的发展以及基于栈的指令集架构

    2011年 JDK7发布 1 7u4中 开始启用新的垃圾回收器G1 但是不是默认 2017年 发布JDK9 G1成为默认GC 代替CMS 一般公司使用jdk8的时候 会通过参数 指定GC为G1 2018年 发布JDK11 带来了革命性ZGC
  • OpenCV使用 GrabCut 算法进行交互式前景提取

    OpenCV使用 GrabCut 算法进行交互式前景提取 1 效果图 2 源码 参考 这篇博客将介绍如何使用Python OpenCV中的GrabCut 算法来提取图像中的前景 并为此创建一个交互式应用程序 1 效果图 官方示例 lena
  • 在vue3+setup+ts中使用内置动态组件component

    1 vue的内置组件的定义 component是vue的内置组件 不需要注册可以直接使用 通过is去选择要渲染的组件 可以是一个组件名称字符串 使用在选项式API中 也可以是组件的定义 使用在
  • 流程(待补充)

    start from init mlt rwlock 1 初始化mlt表的读写锁 函数体调pthread rwlock init mlt mlt lock NULL 该函数为C库提供 初始化该锁之后 后面可以加互斥锁修改mlt表的值 2 初
  • 离散数学——主析取范式与主合取范式原理探究

    主析取范式 对任意一个命题公式来说 主析取范式与主合取范式都是唯一的 命题变元指原子化的 P Q命题 极小项的定义 包含全部N个命题变元的合取式 称其为极小项 且N个命题变元中 每个变元与它的否定不能同时存在 但两者中必有一个出现且仅出现一
  • MakeFile编写

    1 生成静态库和动态库 文件 makefile test cpp test h lib PWD libs libtest a so PWD libs libtest so all lib so lib test o ar rcs lib t