将文件添加到/usr/local/include

将文件添加到/usr/local/include,c,linux,go,C,Linux,Go,我最近在一台linux机器上安装了openjtalk,我希望能够将其封装在Go中。openjtalk的源文件有几个具有不同源的子文件夹,我假设编译器会因为make文件而找到这些子文件夹 我是否应该将这些子文件夹复制到/usr/local/include?这是修复包含依赖项的“正确”方法。根据我的测试,如果我复制包含的文件,Go似乎可以找到它们,但我不确定这是否是linux的正确做法。更改外部库的位置通常不是一个好主意。有些库会自动将自己放入编译器的include路径中,但对于那些不这样做的库,最

我最近在一台linux机器上安装了openjtalk,我希望能够将其封装在Go中。openjtalk的源文件有几个具有不同源的子文件夹,我假设编译器会因为make文件而找到这些子文件夹


我是否应该将这些子文件夹复制到
/usr/local/include
?这是修复包含依赖项的“正确”方法。根据我的测试,如果我复制包含的文件,Go似乎可以找到它们,但我不确定这是否是linux的正确做法。

更改外部库的位置通常不是一个好主意。有些库会自动将自己放入编译器的include路径中,但对于那些不这样做的库,最好将它们的路径添加到编译器的include路径中


例如,在gcc中,您可以
gcc-I/your/header/directory
包含您的目录。通常人们把这些信息放在Makefile中。这样,您可以将外部库的源代码放在存储库中,并告诉编译器也在那里查找头。这样,在设置新的工作环境时,您只需从存储库中提取即可。

例如,gcc有一个-I标志,当您
-I/your/new/headers
时,您将该文件夹添加到header目录列表中。这是我在许多项目中看到的方式。为一个新系统设置一个工作环境也更容易。这很有效。如果你的答案正确,我就把它标为正确。Go似乎还要求include和cflags注释行在导入“C”上方一行,否则它将不起作用。这些要求已记录在案。请阅读手册了解更多详情。