MacOSx - 使用 make 命令编译 C 项目

     2023-02-17     26

关键词:

【中文标题】MacOSx - 使用 make 命令编译 C 项目【英文标题】:MacOSx - Compiling a C project using make command 【发布时间】:2016-01-06 17:02:49 【问题描述】:

我正在为我的系统编程课程做作业,这是一门使用 linux 终端和 C 语言的课程。我拥有一台 Mac,并且我的其他课程已经需要一个 Windows VM,所以我没有空间安装 linux 机器,我的教授说我的 mac 机器可以正常工作,因为它有 linux 终端。

我们必须创建一个 makefile 文件,它将编译和链接 c 项目并创建一个 .bin 文件,这是在 linux 环境中编程 C 的基础,但是我的 makefile 出现错误。

我认为这与 Linux 和 MacOS 之间的差异有关,但我不确定。

我的makefile如下:

./bin/cryptoMagic: ./obj/main.o
cc ./obj/main.o -o ./bin/cryptoMagic

./obj/main.o: ./src/main.c ./inc/prototypes.h
cc ./src/main.c -c -o ./obj/main.o

当我在终端中运行 make 实用程序时,我收到以下错误消息:

kyles-MacBook-Pro:~ KyleJensen$ cd Documents/School/First\     Year/Semester2/SystemProgramming/Assignments/Assign01/
kyles-MacBook-Pro:Assign01 KyleJensen$ make
cc ./obj/main.o -o ./bin/cryptoMagic
Undefined symbols for architecture x86_64:
"_main", referenced from:
 implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see    invocation)
make: *** [bin/cryptoMagic] Error 1

【问题讨论】:

它看起来不像是 Linux/Mac 问题。至少你需要先重新编译 main.c。查看 cc 的文档。 您有binobjincsrc 子目录吗?您的main.c 是否包含main(int argc,char*argv[]) 函数?你能添加-I inc 告诉编译器你的包含文件在哪里吗? 闻起来好像 main.c 中没有“主”入口点 - 我们可以看看吗 哇,我重新开始了。感谢您指出我的愚蠢错误,我没有在 C 文件中写任何内容 LOL。 【参考方案1】:

我傻了。我的 C 文件中没有有效的 main 函数。以后的孩子要小​​心这个!

【讨论】:

如何在macosx下aa,安装gcc

参考技术A一、MacOSX中make和gcc命令的安装在编译Lua前需要做的准备工作。我将lua-5.2.2.tar.gz下载到苹果电脑中,解压后进行编译时,发现我的MacOSX没有mak命令,也没有gcc命令。检测苹果电脑的MacOSX中是否有make命令的方法,可在控... 查看详情

如何在 Windows 7 上使用 Vim 的“make”命令和 Visual Studio 的编译器编译 C 程序?

】如何在Windows7上使用Vim的“make”命令和VisualStudio的编译器编译C程序?【英文标题】:HowdoIcompileCprogramsusingVim\'s\'make\'commandwithVisualStudio\'scompileronWindows7?【发布时间】:2011-07-3011:31:58【问题描述】:我正在尝试将Vim设置为用户VS(... 查看详情

如何使用make更高效地编译c文件

】如何使用make更高效地编译c文件【英文标题】:Howtocompilecfilesmoreefficentwithmake【发布时间】:2016-07-1219:05:17【问题描述】:我目前正在编写一个玩具操作系统。由于有很多c文件gcc命令不会改变(文件名除外),有没有办法自动... 查看详情

make命令教程(代码片段)

...ake命令的用法,从简单的讲起,不需要任何基础,只要会使用命令行,就能看懂。我的参考资料主要是IsaacSchlueter的《M 查看详情

linux使用make命令编译时出现啥提示证明make成功呢?

在Linux中我使用源码的方式安装软件,执行到make和makeinstall命令是执行很长一段时间,可是我无法确定是否执行成功,请问make和makeinstall时出现什么提示证明编译安装成功呢?这个问题一直困扰着我,请各位帮忙解答一下,不胜... 查看详情

使用makefile编译多个文件(.c,.cpp,.h等)

有时候我们要一次运行多个文件,这时候我们可以使用Makefile!!!◊make是什么?   make是一个命令工具,是一个解释makefile中指令的命令工具。它可以简化编译过程里面所下达的指令,当执行make时,make会在当前的目录... 查看详情

从命令行生成的 .dSYM 文件 (Mac)

...,并使用默认C编译器设置为gcc运行其他人的Makefile。我在MacOSX10.8MountainLion上,我相信我使用“XCode命令行工具”安装了编译器。在命令行上运行“make”后,我得到了每个程序的这些烦人的. 查看详情

如何写makefile(代码片段)

对于源文件较多的c/c++项目,直接在shell中使用gcc/clang进行编译会十分麻烦,makefile可以解决这一问题。Makefile记录了项目的编译规则,当使用make命令进行项目的编译时,make命令会使用makefile中记录的规则,一步步地编译、链接,... 查看详情

make命令教程

...,就要重新构建的项目,都可以用Make构建。本文介绍Make命令的用法,从简单的讲起, 查看详情

从命令行使用 clang 编译:兼容性问题 mac os X

】从命令行使用clang编译:兼容性问题macosX【英文标题】:compilewithclangfromthecommandline:compatibilityissuesmacosX【发布时间】:2015-07-2514:26:32【问题描述】:我正在使用cmake、clang++、boost和openCV在MacOsX10.10上编译一个c++14项目(静态链接-... 查看详情

android系统编译命令make

...的编译。make-j或make-j8启动编译过程。-j后面的数字代表要使用的cputhread的数目。在完成了全编译后,才能执行生成OTA升级包的操作。注意事项: 查看详情

从零开始配置vim(28)——代码的编译运行与调试(代码片段)

...转和自动补全功能。现在的Vim已经可以作为代码编辑器来使用了。但是想将它作为日常发开的主力编辑器来用还需要很长一段路要走,其中一个就是要为它配置代码的一键编译与运行功能。这里我们仍然以C和Python为例。一个... 查看详情

控制make命令的输出更简洁,不要回显每个命令(代码片段)

目前,我正在使用Makefile来跟踪我的项目的所有依赖项和联合。问题是make只是输出它正在做的所有事情,这使得很难发现(甚至读取)更重要的信息(例如编译器警告)。有没有办法控制终端上显示的信息?我知道有一个-s选项... 查看详情

使用 make 编译多个 C 文件

】使用make编译多个C文件【英文标题】:CompilemultipleCfileswithmake【发布时间】:2011-02-0523:00:38【问题描述】:(我运行的是LinuxUbuntu9.10,因此可执行文件的扩展名是executablefile.out)我刚刚开始使用C进行模块化编程(使用多个文件... 查看详情

make调试方法(代码片段)

...动一个个去编译这些文件是不现实的,通常的做法是使用make命令进行自动化编译。make命令执行时,需要makefile文件,以告诉make命令需要怎样去编译和链接程序。不过这些大型工程的makefile文件往往不止一个,且常... 查看详情

make调试方法(代码片段)

...动一个个去编译这些文件是不现实的,通常的做法是使用make命令进行自动化编译。make命令执行时,需要makefile文件,以告诉make命令需要怎样去编译和链接程序。不过这些大型工程的makefile文件往往不止一个,且常... 查看详情

make执行过程

...程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。一、make的退出码make命令执行后有三个退 查看详情

安装redis时,make命令报错

新建一个redis的用户安装,用此账户登录安装执行执行make命令,提示cc-c-std=c99-pedantic-O2-Wall-W-g-rdynamic-ggdbadlismake:cc:命令未找到make:***[adlist.o]错误127 进入Redis目录下的src目录下,执行make命令来编译Redis。当楼主执行编译命令的时... 查看详情