如何在 C Makefile 中使用外部库和头文件?

2023-11-21

我在directory1中有一个头文件myheader.h和一个静态库libmylib.a文件。在directory2 中,我正在编写一个使用它们的程序。假设我在directory2中有main.c,它使用myheader.h和libmylib.a。如何创建 Makefile 来编译和链接它们?

现在,在我的 main.c 中,我添加了

#include "../directory1/myheader.h"

这是我现在的 Makefile:

CC = gcc

INCLUDES = -I

CFLAGS = -g -Wall $(INCLUDES)

main: main.o ../directory1/libmylib.a
    $(CC) main.o ../directory1/libmylib.a -o main

main.o: main.c ../directory1/myheader.h
    $(CC) $(CFLAGS) -c main.c

我收到以下警告:

gcc -g -Wall -I -c main.c
/home/me/directory2/main.c:72: undefined reference to `foo'
collect2: ld returned 1 exit status
make: *** [main.o] Error 1

其中 foo 是库中的函数之一。


好的。修复。

我删除了#include "../directory1/myheader.h"并将其替换为#include "myheader.h".

然后在 Makefile 中,我使用了:

CC = gcc

INCLUDES = -I../directory1

CFLAGS = -g -Wall $(INCLUDES)

LDFLAGS = -L../directory1

main: main.o ../directory1/libmylib.a
    $(CC) main.o $(LDFLAGS) -lmylib -o main

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

如何在 C Makefile 中使用外部库和头文件? 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 将应用程序配置为 Facebook 错误:“应用程序的 Facebook 登录配置错误..”[重复]

    这个问题在这里已经有答案了 可能的重复 应用程序的 Facebook 登录配置错误 Android Facebook 集成问题 我正在尝试将 facebook 集成到我的应用程序中 当我按下登录按钮并填写电子邮件和密码时 我在应用程序中收到
  • Angular Material 7 拖放 x 和 y 坐标

    我有一个容器 里面有一个元素 我希望能够将元素拖动到容器内的另一个位置并查看新的 x 和 y 坐标 其中 x 0 和 y 0 是容器的左上角 我在以下位置设置了一个基本的 stackblitzhttps stackblitz com edi
  • 为什么我的数字四舍五入不正确?

    这感觉像是那种只会在原地失败的代码 但我会尝试将其改编成代表我所看到内容的代码片段 float f myFloat myConstInt Where myFloat 13 45 and myConstInt 20 int i int f i
  • 执行 pipfile 脚本

    如何执行 Pipfile 中定义的脚本 按照语法发现here 我在 pipfile 中定义了脚本部分 如下所示 scripts tests bash run tests sh 运行后 pipenv install 我怎样才能调用tests
  • 安装apk时出现java.lang.SecurityException

    如你所知 apk 是一个 zip 存档 我提取了它并替换了一些资源 然后再次压缩它 当我安装它时 我收到此异常 java lang SecurityException META INF MANIFEST MF 具有无效摘要 这个错误有什么解
  • 什么时候调用 C++ 析构函数?

    基本问题 程序何时调用 C 中类的析构函数方法 有人告诉我 只要一个对象超出范围或受到某个对象的影响 就会调用它delete 更具体的问题 1 如果该对象是通过指针创建的 并且该指针后来被删除或被赋予一个新的地址来指向 那么它所指向的对象是
  • TaskCreationOptions.AttachedToParent 不等待子任务

    根据 MSDN 您可以使用 AttachedToParent 选项来表达结构化任务 并行性 因为父任务隐式等待所有子任务 要完成的任务 所以我有这个代码 public async Task
  • 读取内核空间中的符号链接

    我正在编写 LKM 需要找出特定符号链接指向的位置 基本上我需要系统调用的功能readlinkat or readlink 但是在内核空间中 是否有捷径可寻 Using readlinkat直接对我不起作用 我总是收到 EFAULT 我猜这
  • 定义内部枚举[重复]

    这个问题在这里已经有答案了 在linux内核源代码中 我看到在枚举内部 是否还有一个与枚举元素同名的定义 示例中linux rtnetlink h我们有 enum RTM BASE 16 define RTM BASE RTM BASE R
  • 循环引用和 WCF

    我已经使用 POCO Generator 生成了 POCO 实体 我的数据库中有超过 150 个表 我在整个应用程序层 包括客户端 共享 POCO 实体 我在我的上下文中禁用了 LazyLoading 和 ProxyCreation 我在数
  • 在不知道xml文件结构的情况下解析xml文件内容

    我一直在学习一些使用 java 解析文件的新技术 对于 msot 部分 进展顺利 但是 我不知道如何将 xml 文件解析到收到后结构未知的位置 如果您知道结构的话 有很多关于如何执行此操作的示例 getElementByTagName 似乎
  • 如何获取android中加载mapview的进度状态?

    当地图处于加载状态时 我想在地图视图的中心放置一个进度条 如何获得进度 以及怎么办 给我一些例子 thanks 我认为没有任何合理的方法可以做到这一点 请注意 谷歌在其地图应用程序中也没有这样做 只需查看页面即可清楚地了解图块是否仍在加载
  • Spring security - oauth2 资源服务器测试

    我在使用 WebMvcTest 和 POST HTTP 方法测试 oauth2 资源服务器时遇到一些问题 当我不发送 csrf 令牌时 我总是收到 403 状态代码 即使当我使用不记名令牌时不需要该令牌 这是我要测试的 POST 方法 Po
  • 保持回发时的页面位置

    我有个问题
  • 从 URL 获取路径

    寻找一种从 PHP 中的 URL 获取路径的方法 我要拿 http example com hurrdurr 并做到 hurrdurr 我只想要后面的文字 com 我可以用修剪来做到这一点吗 Use parse url来提取你想要的信息 例
  • 为什么“fputc”使用 INT 作为参数而不是 CHAR?

    标准 C 库 int fputc int c FILE stream 并且这样的行为多次发生 例如 int putc int c FILE stream int putchar int c 为什么不直接使用 CHAR 呢 如果必须使用 IN
  • 通过 Gmail API 发送多部分/签名电子邮件 (RFC 3156)

    尝试构建符合 RFC3156 0 的消息 并通过 Gmail API 发送它 我正在使用 python 客户端实现 我得到的是 在我的 Gmail 邮箱中 邮件已正确发送 我看到的正是我之前构建的邮件 我的接收者得到的是 一条 多部分 混合
  • 通过 Promise 配置多种功能

    这是对使用量角器设置 firefox 配置文件 topic 根据setFirefoxProfilehowto 可以使用特殊的方式设置 firefox 配置文件 助手 js代码它使用firefox profile and q动态生成编码的 F
  • 如何使用 PHP Composer 从 Laravel 中删除包?

    使用 PHP Composer 从 Laravel 中删除包的正确方法是什么 到目前为止我已经尝试过 从文件中删除声明作曲家 json 在 要求 部分 删除任何类别名从文件app php 从我的代码中删除对该包的任何引用 Run compo
  • 如何在 C Makefile 中使用外部库和头文件?

    我在directory1中有一个头文件myheader h和一个静态库libmylib a文件 在directory2 中 我正在编写一个使用它们的程序 假设我在directory2中有main c 它使用myheader h和libmyl