问题标签 [gnu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
201 浏览

gnu - 在 HP-UX 上编译 GNU 软件。yy* 符号问题

当试图在 HP-UX(例如 binutils)上编译 GNU 软件时,我收到关于不满足符号 yyfnd、yyextra、yytextuc、yyolsp 的错误消息...

某些软件无法使用 HP-UX 自己的 lex 进行编译,因此我在我的 PATH 中包含了 byacc 和 flex 可执行文件。是 HP-UX lex 的问题吗?如何解决?

0 投票
4 回答
1467 浏览

makefile - 如何在递归构建中忽略命令行变量赋值?

我正在尝试将两个构建系统粘合在一起。两者都是递归的(makefile 中的规则使用 make 来调用其他 makefile 来构建项目的组件)。

我将它们称为“A”和“B”,其中“A”构建应用程序,“B”构建“A”使用的库。

A中的顶级makefile调用'make TARGET=whatever',这意味着构建的所有递归调用位都继承TARGET的值作为只读变量,包括来自B的构建系统,它被称为递归构建。

我不希望这种情况发生在“B”(来自不同项目)的构建系统中,因为那里的 makefile 将 TARGET 用于自己的目的,并且构建失败,因为 TARGET 具有错误的值并且是只读的。

我只能看到两种解决方案,这两种解决方案都不是可取的;

1) 将 TARGET 重命名为 A 中设置它的 makefile 和 A 中使用它的 makefile 中的其他内容,以避免与构建系统的较低级别发生冲突。

2) 在 B 中设置了 TARGET 变量的 makefile 中的任何地方使用“覆盖”指令,以覆盖其只读状态。

有人有更好的想法吗?- 理想情况下,我不希望B 的构建系统从 A 继承任何东西,除了我从 A 明确传递给 B 构建系统的那些选项

顺便说一句,我正在使用 GNU Make v3.80。

0 投票
11 回答
31676 浏览

c - 将 GCC 调用为“cc”与“gcc”

我知道在大多数 GNU/Linux 系统上,可以从命令行通过名称“cc”调用 GCC(而不是“gcc”)。当 GCC 以一种方式与另一种方式调用时,它的行为有什么不同吗?

例如,我知道通过名称“g++”而不是“gcc”调用 GCC 会导致 GCC 的行为不同(它将 .c 文件视为 C++ 源代码和 C++ 标准库中的链接)。“gcc”与“cc”之间的行为是否有类似的差异?

编辑:到目前为止收到的答案都没有给出明确的“是”或“否”,即如果以一种方式调用与另一种方式调用,GCC 的行为是否会有所不同。然而,深入研究源代码以检查其行为的想法使我走上了这条路。根据我在那里的发现,我现在相信答案是:

不。无论是通过 "gcc" 还是 "cc" 调用 GCC,它的行为都是相同的

0 投票
3 回答
2763 浏览

linux - 在关联文件(文档)中增加新版本的版本号

我很想知道您如何处理新版本问题的版本号冲突。

您如何处理相关文件(如手册页等)中的版本号。

该软件是使用 gnu 工具链构建的,因此 autoconf、automake 等可用并用于应用程序的版本号。这样信息就可以被重用。

git用作vcs。

一种可能性是在 Makefile.am 中引入一个额外的新目标,该目标执行 sed/awk 以替换所有关联文件中的版本号和日期。该目标可以在新版本开发的开始(分支之后)调用一次。

然后,当人们对项目进行git clone或发布 tarball 完成时,项目可以使用正确的信息构建。当然,在开始开发新版本时必须记住运行这个 make 目标。

另一种选择是用 dist 目标的钩子替换 sed/awk。但这会使项目的 git 存储库处于没有正确版本号与关联文件关联的状态。

我更喜欢第一个解决方案,因为它还在 git 历史记录中记录了正确的版本号。

在进行 sed/awk 替换时,您更喜欢“在文件中”还是在文件中使用模板,就像 autoconf/automake 工具一样。我看到这两种方法的优点和缺点。

您如何处理关联文件的版本控制。您是在开发阶段开始时更改它们吗?是在发货前更改它们吗?您是进行 infile 替换还是更喜欢使用模板?

谢谢。

0 投票
4 回答
3409 浏览

windows - 构建供 Windows 开发人员使用的开源库 DLL 的最佳方法是什么?

我有几个使用 GNU 工具链(automake、conf、flex、bison、gcc,...)在 Linux 和 OSX 上开发的 C 自由软件/开源库,但我偶尔会收到提供 Windows DLL 的请求。我希望能够提供这些,而无需花费大量时间和金钱进行 Windows Visual Studio 开发。我确实有一个可用的 Windows XP 虚拟机,而且我也知道该软件是可移植的,因为偶尔我会获得补丁以使其内置在 Windows 上。

我应该使用什么方法或工具?在 Linux 上交叉编译?使用 Visual Studio Express 或其他东西?我更喜欢从 SVN 存储库完全自动化的东西。我不认为 cygwin 是一种解决方案,因为据我了解这些问题 - 链接和 DLL,它似乎不能提供 Windows 开发人员需要的东西。

0 投票
3 回答
4673 浏览

c++ - 如何使配置脚本检查依赖项

我使用 autoconf 生成了一个配置脚本来构建我的项目。

除非我没有安装一些需要的库,否则它工作正常。Make 在缺少某些文件时返回错误,但我认为它应该由配置脚本实际检查?

所以我的问题是:如何修改 autoconf 生成的脚本来寻找依赖关系并告诉用户它缺少哪些库?

0 投票
6 回答
15471 浏览

linux - 在 Bash/Sh 等中用于 Shell 脚本的 IDE / Emacs 模式

我将 Emacs 用于 shell 脚本。我知道我在某处读到了一些模式,可以更轻松地在 Emacs 上编写 Shell 脚本(代码完成、自动完成、括号匹配、语法高亮、检查语法),但找不到它。简而言之,我想把 Emacs 变成一个 Bash IDE。

此外,是否有任何其他工具/IDE 可以使 GNU/Linux Shell 上的脚本编写更容易?

0 投票
6 回答
726 浏览

windows - GNU CC 和 Windows

我对在 Windows 上使用 GNU CC 的选项有点困惑。

如果我想主要开发控制台应用程序(而不是 GUI 应用程序),我需要什么?Cygwin 和 MinGW 的数字在哪里?例如,如果我使用 NetBeans IDE C/C++ 选项,则需要安装 Cygwin。

是否有任何选项可以在没有 Cygwin 的情况下允许控制台应用程序开发?

0 投票
2 回答
8035 浏览

makefile - Autotools 库和目标文件输出控制

我的目标是将所有目标文件构建在 .objs 目录而不是 Makefile 的根目录中,并将二进制文件(和库)复制到项目的bin/目录中。但我一直找不到任何资源来解释如何做到这一点。我该怎么做呢?

这是我的 configure.ac 和src/Makefile.am - 对于两个引用的共享库,我有类似的 Makefile.am 文件。它们编译,并在将它们复制到bin/目录后正常工作。我只是想自动化这个过程。

配置.ac

src/Makefile.am

所以,我的问题是如何为每个 Makefile 的编译结果指定输出目录(我希望它们被复制到bin/,并且目标文件在每个项目的.obj中而不是在 Makefile 的根目录中.

感谢您迄今为止的帮助。这个网站是一个很好的资源,我从已经提供的链接中学到了很多东西。

0 投票
5 回答
32252 浏览

c++ - 在 Linux C++ 应用程序中查找和读取大文件

我使用 G++ 中的标准ftellfseek选项遇到整数溢出,但我想我弄错了,因为ftell64fseek64似乎不可用。我一直在搜索,许多网站似乎使用带有off64_t数据类型的lseek进行引用,但我没有找到任何引用与fseek相等的示例。现在,我正在阅读的文件是 16GB+ CSV 文件,预计至少会增加一倍。

在没有任何外部库的情况下,实现与fseek/ftell对相似的结构的最直接方法是什么?我的应用程序现在使用 4.x 的标准 GCC/G++ 库工作。