问题标签 [xlc]
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.
c - 使用 xlc_r 时显示随机输出的 MALLOCDEBUG
我有一个使用 xlc_r 编译的程序,它产生多个线程并试图跟踪它以查看是否有任何内存泄漏。我已经阅读了这篇文章,详细介绍了如何使用 AIX 中内置的 MALLOCDEBUG 功能,但是在运行 format_mallocdebug_op.sh 之后,它显示内存泄漏到处都是随机 pthread 和文件方法,例如 pthread_attri_init、_pth_init、fopen、 fwrite 等
然后我制作了一个较小的测试程序,故意不释放 char * 并用 xlc_r 编译它,并且出现了几乎完全相同的输出。然后我再次编译了测试程序,但使用 xlc 并且它工作正常,显示一个 char * 内存泄漏,就是这样。MALLOCDEBUG 功能似乎不适用于多线程编译的应用程序。是否有设置告诉它注意这一点?
c++ - 确定用于在 *ix 操作系统上构建共享对象的编译器和版本
我在一些加载一组用户指定的共享对象的软件上工作。我想向我们的“加载器”组件添加一些代码,它可以查询每个指定的共享对象并找出用于构建/链接该共享对象的编译器和编译器版本。
过去,我可以使用“strings -a | grep”方法,如下所示。但是,这种方法不适用于在 power AIX 上使用 g++ 4.8 编译的代码,并且对于在 x86 linux 上使用 g++ 4.8 编译的代码也不是特别好。
如果可能的话,我也很想找到一些比 grepping 字符串更简洁的方法来获取这些信息。
谁能提供有关如何查询共享对象以获取构建它的编译器的名称以及该编译器的版本的建议?
这是我当前技术的一些示例命令和输出:
在 x86 linux g++ 4.1 编译的共享对象上:
(这里有很多重复的输出,但很明显版本是GCC 4.1.2)
在 Power AIX xlC v11 编译对象上
(显示 v11 和 v10 有点令人困惑,但 XL C 很清楚)
在 x86 linux g++ 4.8 编译的共享对象上:
(这里也有点令人困惑,它显示了多个版本)
在 Power AIX g++ 4.8 编译对象上
在 x86/linux 上,我通常会在我可以匹配的 'strings -a' 输出中看到“GNU”类型的字符串。但是,在使用 g++4.8 在 power/aix 上编译的这个 libshareme.so 上使用 strings -a 并没有向我显示任何关于编译器版本的明显信息。
c - libqrencode - 分段错误无法读取“qrspec.c”
我之前提出过这个问题,并通过我得到的回应在隧道尽头得到了启发。但是现在我发现了问题,我不明白。我没有root权限。每当我运行程序时,我都会遇到分段错误和核心文件。当我用 dbx 分析它时,我得到了这个
如果该文件包含在生成lib的过程中,他怎么找不到qrspec.c?(我没有参与那个过程,所以我不知道它是否 100%,但我给了 .tar 和所有文件)。该文件也属于 libqrencode。
编译:
我开始相信它找不到该文件,因为 /usr/local/lib 文件夹上缺少一个 .so 符号链接。会是这样吗?(只有 .a , .la 和 .so.3 在那里)
我认为我的问题与这个问题相似,但除非这是真正的问题,否则我无法再次安装 lib。
机器:Unix AIX powerpc 型号:IBM,9117-MMB xlc 版本:12.01.0000.0000
c - 为什么 bluegene/q 上的 XLC 编译器不支持“-qtm”?
BlueGene/q 上的 xlc 编译器有问题。xlc编译器的版本是12.1:
根据文档1,它应该支持编译器选项“-qtm”,用于启用事务内存。但是,我总是收到以下错误消息:
我怎样才能弄清楚?任何帮助表示赞赏。
aix - 如何使用 xlc 在 AIX 上静态链接 ncurses
我正在尝试使用 AIX 7.1 上的 ncurses 库来利用 AIX 上标准的 curses 库中未包含的面板。我安装了 ncurses 库。编译、链接和执行工作正常: xlc ngoodbye.c -lncurses 实际的 ncurses 库是 libncurses.a,我理解它是一个静态库。但是,当我将可执行文件移动到另一个 AIX 主机并执行时,我得到:无法加载依赖模块 libncurses.a(libncurses.so.5)。无法加载模块 libncurses.a(libncurses.so.5)。系统错误:没有这样的文件或目录。
如何链接 ncurses 库,以便程序在未安装 ncurses 库的其他主机上执行?注意我在 AIX 上使用 xlc,而不是 gcc。我试过 -bstatic 但在编译时出现链接错误。请注意,我不是开发人员,因此我在这方面的经验有限。谢谢。
c - IBM XL C 编译器 - 我如何扩展用户包括但不包括系统包括
搜索了所有 IBM 手册,但令人惊讶的是找不到答案。我有以下内容:
有一个编译选项 - 默认为 NOSHOWINC 如果我将其更改为 SHOWINC 并重新编译 - 我会从上面的所有 4 项中扩展所有内容。我只希望用户包含被扩展..
到目前为止,还没有发现任何选项可以做到这一点 - 所以任何帮助将不胜感激。这是在 z/OS 上运行的 IBM XL C 编译器。
c++ - 可移植地识别非标准 C++?
C有__STDC__
,但似乎没有识别某些扩展 C++ 方言的标准方法。因此对于我使用的可移植代码
到目前为止,这适用于 gcc、XLC 和 Visual C++。
我们必须针对每个编译器测试 ISO/ANSI 一致性,对吗?如果是这样,您能否为其他已被证明有效的编译器提出建议?
编辑:由于对此类测试的赞成和反对进行了很多讨论,因此这是一个真实世界的示例。假设有一些头文件stuff.h在多个项目中与多个编译器一起广泛使用。stuff.h使用了一些特定于编译器的vsnprintf
(在 C++11 之前没有标准化)、一些copy_if<>
(他们在 C++98 中不知何故错过了它)、自己的互斥锁等等。在实现一个干净的 C++11 变体时,您将旧的(但受信任的)实现包装在一些#if __is_extended
(更好:__is_idosyncratic
或!__is_ANSI_C11
)中。新的 C++11 落后于#else
. 当仍编译为 C++0x 或 C++98 的翻译单元包含stuff.h没有改变。没有编译错误,运行时没有不同的行为。C++11 仍然是实验性的。代码可以安全地提交到主分支,同事可以研究它,从中学习并在其组件中应用技术。
c++ - 锻炼。将 DOMNode 指针动态转换为 DOMElement 返回一个 nullptr
再会。问题如下。我有一个有效的 *.xml 文件,我尝试使用以下代码对其进行解析:
程序在第一次“等于”检查时使用 SIGILL 在执行期间崩溃。调试显示,在动态转换之后,currentElement 实际上是一个空指针。这里有什么问题?
使用 xlc++、Xerces 库 2.5、AIX 7 编译。
PS 相同的代码显然在 Windows 上运行良好。
更新:将 dynamic_cast 更改为 static_cast 使代码运行没有错误。然而,它留下了一些悬而未决的问题。
1) 为什么在 Windows 上使用 dynamic_cast 时代码运行没有错误,但在 Unix 上却没有?可能是编译器或库版本问题?
2)在这种情况下是否有更好/更清洁的投射方式?