如何更改以下LINUX的Makefile,使其也可在MACOS上使用[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更改以下LINUX的Makefile,使其也可在MACOS上使用[关闭]相关的知识,希望对你有一定的参考价值。

我在Linux PC上有一个Makefile。我也想在MacOS上构建并运行相同的程序。如何编辑以下Makefile?

我想编译一个C图形程序,该图形程序具有图形库EGGXProCALL JAXA“ eggx.h”的头文件。我已经安装了Xcode,XQuartz。

我已在以下目录中安装了EGGX文件。

[[Home @ / opt / eggx] $

我在以下目录中有一个C文件。

[[Home @〜/ Desktop / development] $

我已经检查了以下内容。

①gcc在这里很好用

[Home @〜/ Desktop / development] $

②甚至示例程序也可以显示数字时钟,当前目录为

[[Home @ / opt / eggx] $

问题

当我尝试通过使用我在Linux中拥有的makefile从

[Home @〜/ Desktop / development] $

构建[make]程序时。我总是收到以下错误消息。

[Home~/Desktop/development]$ sudo make gcc -c main.c main.c:7:10: fatal error: 'eggx.h' file not found #include <eggx.h> ^~~~~~~~ 1 error generated. make: *** [main.o] Error 1 [Home@~/Desktop/development]$

这里是Makefile

# Makefile OBJS = main $(OBJS): $(OBJS).o # gcc -O2 -Wall $(OBJS).c -o $(OBJS) -I/usr/local/include -L/usr/local/lib64 -leggx -lX11 -lm gcc $(OBJS).c -o $(OBJS) -I/usr/local/include -L/usr/local/lib64 -leggx -lX11 -lm $(OBJS).o: $(OBJS).c gcc -c $(OBJS).c .PHONY: clean clean: rm -f $(OBJS) $(OBJS).o

答案
您必须按照正确的顺序进行操作,除非您已正确完成上一步,否则请不要继续进行下一步。

1。下载并解压缩库。

通常通过git clonescp下载来从某处复制源文件。

摘录(从档案中解压缩)通常使用:

tar -xvf eggx-0.93r5.tar

通常会创建一个新目录(名称与tar文件相同,但没有.tar扩展名,如:]

eggx-0.93r5

2。建立库。

通常,您需要将目录更改为新创建的目录并运行make。我上次给了您Makefile,所以您需要这样做:

cd eggx-0.93r5 cp MAKEFILEFROMMARK Makefile make

应该没有错误。如果有错误,则必须解决它们,然后运行:

make clean # delete any rubbish from previous failed build make

3。安装库。

您通常使用:

make install

实际执行的操作取决于您所安装的软件包,但是通常,它将把您刚刚制作的头文件和库复制到

“ known”

位置,例如/usr/local或[C0 ]。想法是通过“”发布“或将它们安装到已知位置,使计算机的所有用户都可以使用您自己的代码需要的所有文件。4。找出如何编译使用该库的简单C程序。

您应该执行以下步骤

在完全不同的目录中

从将库下载到的位置-请勿将代码与库的代码混合。如果您的程序这样使用/opt/package

eggx.h

然后您需要找到#include "eggx.h"
的位置:

eggx.h

如果导致:

find /usr /opt /Users -name eggx.h

这意味着您必须将其添加到/path/to/somewhere/include/eggx.h
命令中以告诉编译器如何找到它:

gcc

如果您的库称为gcc -I/path/to/somewhere/include ...
,您也需要找到它:

libeggx.a

如果导致:

find /usr /opt /Users -name "libegg*a"

这意味着您需要将其添加到/path/to/somewhere/lib/libeggx.a
命令中以告诉链接器它在哪里以及它叫什么名字:

gcc

如果程序使用X11,则必须在Mac上安装XQuartz,并将X11的标志/开关添加到编译中:

gcc ... -L/path/to/somewhere/lib -leggx

因此,将所有内容放在一起,如果您的程序称为gcc ... -I /opt/X11/include -L /opt/X11/lib -lx11 ...
,则将进行编译和链接:

program.c

然后运行:

gcc program.c -o program -I/path/to/somewhere/include -I /opt/X11/include -L /opt/X11/lib -lx11 -L/path/to/somewhere/lib -leggx

5。制作一个包含您在(4)中学到的知识的Makefile。

可能看起来像这样:

./program