首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在windows上编译cmocka

在windows上编译cmocka
EN

Stack Overflow用户
提问于 2021-11-17 14:02:02
回答 1查看 60关注 0票数 0

我正试图在我的windows机器上编译一个简单的单元测试。当我试图编译我的测试时,我使用的是共享库标志。

代码语言:javascript
复制
gcc -c -L./bin/ -lcmocka .\Test.c .\src\some_module.c
gcc .\Test.o .\some_module.o -o main

但是第二行抛出了这个错误:

代码语言:javascript
复制
undefined reference to `_cmocka_run_group_tests'

但是,如果我直接使用从他们的git下载的cmocka.c文件进行编译,它工作得很好:

代码语言:javascript
复制
gcc -c .\lib\cmocka.c .\Test.c .\src\some_module.c
gcc .\Test.o .\some_module.o .\cmocka.o

我在第一次编译中做错了什么?此外,我很高兴了解这两个编译之间的差异。哪个是更好的实践?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-11-17 14:11:59

为了编译代码,编译器不需要知道在哪里查找库。只要编译器“找到”函数的声明就足够了,这些声明通常位于库提供的头文件中。

此步骤在编译过程的第一行中完成(可能需要通过添加-Ipath/to/headers/来指定头文件的文件夹):

代码语言:javascript
复制
gcc -c .\Test.c .\src\some_module.c

库本身在链接步骤中与代码“结合”,这是在第二个编译步骤中完成的。在这里,您需要指定库(如果链接器没有自己找到库,还需要通过-Lpath/to/library指定它的路径):

代码语言:javascript
复制
gcc .\Test.o .\some_module.o -o main -L./bin/ -lcmocka 

你绝对不应该使用你的第二种方法,自己编译这个库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70005790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档