gpt4 book ai didi

c++ - 在 AIX 上使用 ofstream

转载 作者:可可西里 更新时间:2023-11-01 17:59:44 28 4
gpt4 key购买 nike

我正在尝试在 AIX Box 上编写一个简单的 C++ 程序。程序如下:

# include <iostream>
# include <fstream>
using namespace std ;


int main()
{
ofstream of ;
of.open("license.txt") ;
of<<"hello"<<endl ;
of.close() ;
}

我的 LDFLAGS 设置如下:

-maix64 -L/disk3/TOOLS/GCCTools/gcc-4.5.1/lib/ppc64 \
-L/disk3/TOOLS/GCCTools/gcc-4.5.1/lib/gcc/powerpc-ibm-aix6.1.0.0/4.5.1/ppc64 \
-L/disk3/TOOLS/GCCTools/gcc-4.5.1/lib/gcc/powerpc-ibm-aix6.1.0.0/4.5.1 \
-L/disk3/TOOLS/OPENSSL/lib

CFLAGS 是:

-O2 -maix64 -I/disk3/TOOLS/OPENSSL/include -D_ALL_SOURCE -D_XOPEN_SOURCE \
-D_XOPEN_SOURCE_EXTENDED -DSS_64BIT_SERVER -D_POSIX_SOURCE -D__64BIT__ \
-I/disk3/TOOLS/OPENSSL/include -I/usr/include \
-I/disk3/TOOLS/GCCTools/gcc-4.5.1/lib/gcc/powerpc-ibm-aix6.1.0.0/4.5.1/include

程序编译正常。但是当我尝试运行相同的程序时,程序会出现段错误。我用 gdb 运行了同样的程序,当我使用 ofstream 时发现了以下问题:

Program received signal SIGSEGV, Segmentation fault.
0x09000000036107c4 in std::locale::operator=(std::locale const&) (this=
findvar.c:706: internal-error: value_from_register: Value not stored anywhere!

知道为什么会这样吗?任何帮助表示赞赏:)

注意:fstream 本身可以工作...

最佳答案

我遇到了同样的错误。重现错误的关键点是:1 在共享库中使用 std::stream(例如 std::ofstream);2 使用share库中的pthread函数(如pthread_self);3 使用“-O2”优化代码。然后显示“Segmentation fault (core dumped)”。

AIX 提供了 2 个版本(64 位)的 libstdc++.a。 (参见 http://www.perzl.org/aix/index.php?n=Main.GCCBinariesVersionNeutral)64 位编译,非线程安全 (<prefix>/ppc64 )64 位编译,线程安全 (<prefix>/pthread/ppc64)

我的解决方案是:将 LIBPATH 更改为使用 "<prefix>/pthread/ppc64"版本。例如将 LIBPATH 设置为“/opt/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.6.1/pthread/ppc64/”

它在我的机器上运行良好。

关于c++ - 在 AIX 上使用 ofstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924410/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com