在Mac上如何使用尖括号将C库安装为<mylib.h>

兰斯·波拉德

如果我进入/usr/local/lib,我会看到一堆文件夹和.dylib文件,我很确定动态链接的库文件。如果我去的话,/usr/local/include它有一堆.h文件,每个文件都有未编译的纯C源代码。

如果我在放置.h文件/usr/local/include/mylib.h,而在本地放置另一个文件.c.h文件~/Desktop/test/foo.c,则在其中foo.c可以包含mylib.h

~/Desktop/test/foo.c

#include <mylib.h>

int
main() {
  puts("Hello World");

  return 0;
}

如果我遵循这个,我会在终端中写这个:

$ clang -Xlinker -v
@(#)PROGRAM:ld  PROJECT:ld64-351.8
configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS)
Library search paths:
  /usr/lib
  /usr/local/lib
Framework search paths:
  /Library/Frameworks/
  /System/Library/Frameworks/

于是/usr/local/lib就在那里,这是一堆.dylib文件。我无法修改/usr/lib

我的问题是如何获取本地C库(例如)~/Desktop/test/mylib.{c,h},并将其集成到其他C库的安装位置,这可能类似于自制软件。

我希望能够使用<尖括号>而不是“引号”来包含库。

所以说我有图书馆mylib.h图书馆mylib.c

mylib.c

#include "mylib.h"

void
print(char* str) {
  puts(str);
}

mylib.h

#include "stdlib.h"
#include "stdio.h"

extern
void
print(char* str);

然后,我将foo.c其包括在内。

foo.c

#include <mylib.h>

int
main() {
  print("Foo");
  return 0;
}

问题是我如何同时使用Clangmylibfoo.cClang进行编译,以便可以#include <mylib.h>在任何项目中使用尖括号将foo.c

我一直在像这样构建它们:

build:
  @clang -shared -fpic -O2 \
    -install_name mylib.dylib \
    -o mylib.dylib \
    mylib.c
  @clang foo.c build.dylib -o foo
  @./foo
.PHONY: build

似乎可行,但是现在的问题是如何以编程方式(不使用XCode)将它们放置到某个合适的位置,以使其通过尖括号进行加载。

乔纳森·莱夫勒

如果你坚持:

  • 构建共享库(.dylib)并将其放入/usr/local/lib

  • 将标题复制到/usr/local/include

然后,您可以使用以下链接:

gcc -o program source.c function.c -lmylib

并且您将能够编写#include <mylib.h>您的源代码,并且将找到标头。

另一方面,通常最好使用引号(#include "mylib.h"包含项目标头,并且您可以指定在编译器命令行上找到标头和库的目录(-I/some/where/include标头;-L/some/where/lib对于库)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

c:在Mac上使用copyfile.h

来自分类Dev

如何为<stropts.h>安装库?

来自分类Dev

cmake configure_file 没有正确扩展 mylib.pc.in

来自分类Dev

如何计算h点

来自分类Dev

C-使用.h文件

来自分类Dev

在Apache上安装H5AI

来自分类Dev

如何在15.10上安装H265?

来自分类Dev

在Mac上取消shutdown -h命令

来自分类Dev

Android上的windows.h库

来自分类Dev

在Java中使用“ h = Math.min(h,h)”有任何逻辑上的原因吗?

来自分类Dev

您如何将 Python.h 库添加到 Eclipse 以在 C++ 程序中使用?

来自分类Dev

找不到库.h文件

来自分类Dev

如何安装libpq-fe.h?

来自分类Dev

安装 h2o/使用 Java?

来自分类Dev

使用unistd.h和C写入Mac OSX 10.9.3上的串行端口

来自分类Dev

将 H 标签放在 Bootstrap 按钮上

来自分类Dev

如何删除使用 sudo -h 安装的 pip 包

来自分类Dev

使用sed将括号括在<p>标记的多行周围,并在到达<h1>,<h2>,<h3>时停止

来自分类Dev

覆盖gstbasesrc.h / .c和gstpushsrc.h / .c

来自分类Dev

HTML如何使H1,H2等作为链接?

来自分类Dev

如何计算 2^h*ceil(i/2^h)

来自分类Dev

如何包含nmath.h?

来自分类Dev

如何从.h生成类图?

来自分类Dev

如何从h:selectManyMenu获得价值

来自分类Dev

我如何使用表格将数据插入我的H2数据库

来自分类Dev

我如何使用表格将数据插入我的H2数据库

来自分类Dev

混合.c和.h文件

来自分类Dev

链接.c和.h文件

来自分类Dev

在管理Bean中使用<h:button> <h:link>