Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solaris 11.4系统头文件阻止使用stlport4库 使用任何Solaris Studio编译器使用一行C++程序,当使用-Bools= STLPOT4选项时,Solaris 11.4会出现错误。_C++_Build_Solaris - Fatal编程技术网

Solaris 11.4系统头文件阻止使用stlport4库 使用任何Solaris Studio编译器使用一行C++程序,当使用-Bools= STLPOT4选项时,Solaris 11.4会出现错误。

Solaris 11.4系统头文件阻止使用stlport4库 使用任何Solaris Studio编译器使用一行C++程序,当使用-Bools= STLPOT4选项时,Solaris 11.4会出现错误。,c++,build,solaris,C++,Build,Solaris,你好,cpp #include <iostream> int main() { std::cout << "Hello world" << std::endl; return 0; } $ /opt/solarisstudio12.4/bin/CC -m64 hello.cpp -o hello -library=stlport4 "/opt/solarisstudio12.4/lib/compile

你好,cpp

#include <iostream>

int main()

{

    std::cout << "Hello world" << std::endl;

    return 0;

}

$ /opt/solarisstudio12.4/bin/CC -m64 hello.cpp -o hello -library=stlport4

"/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h", line 161: Error: __pad is not a member of const __FILE.

"/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h", line 163: Error: __pad is not a member of const __FILE.

"/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h", line 165: Error: __pad is not a member of const __FILE.

"/opt/solarisstudio12.4/lib/compilers/include/CC/stlport4/stl/_stdio_file.h", line 165: Error: __pad is not a member of const __FILE.
#包括
int main()
{
标准::cout

64位应用程序不应依赖于访问
文件
数据结构的成员。尝试直接访问专用实现特定的结构成员可能会导致编译错误。现有32位应用程序不受此更改的影响,但应删除对这些结构成员的任何直接使用从所有代码

在Solaris上执行64位编译时,您无法访问
文件
结构。但是,如果您编译32位二进制文件,它应该可以工作

为什么孙这样做

因为Sun(现在是Oracle,至少有一段时间)提供:

在Solaris 2.6或更高版本上构建的二进制应用程序,它使用了stability.5中定义的操作系统接口,可在Oracle Solaris的后续版本(包括其初始版本和所有更新)上运行,即使尚未为这些最新版本重新编译应用程序也是如此

这是Oracle的保证。Sun很久以前的保证实际上更有力,几乎可以说如果您的代码经过编译,以后对Solaris的任何更新都不会破坏它

早期版本的Solaris只有一个8位字段用于
文件
的关联文件描述符。该文件描述符字段可见,构建在早期版本Solaris上的代码使用了它

因此Sun在
文件
结构中为文件描述符保留了一个8位字段

但那是三十多年前的事了——在64位处理器出现之前

而且没有遗留的64位二进制文件,Sun不得不担心它们是二进制的

由于Sun只保证了二进制兼容性,因此Sun将新的64位
文件
结构不透明,因此没有兼容的代码可以访问它。(是的,Sun在20世纪90年代初提供了64位系统。杀死了一家伟大的创新公司。)

Sun确实提供了可供需要同时打开256个以上
文件的程序使用的:

扩展文件工具允许32位进程在标准I/O中使用任何有效的文件描述符(请参阅stdio(3C))C库函数。历史上,32位应用程序仅限于使用前256个数字文件描述符用于标准I/O流。通过使用扩展文件功能,此限制被取消。任何有效的文件描述符都可以用于标准I/O

在:

extendedFILE.so.1是一个过时的空库,仅用于二进制兼容

它以前的用途是,对32位二进制文件使用大于255的文件描述符,现在是Oracle Solaris中的默认行为

libc库现在处理最初由extendedFILE.so.1处理的环境变量

底线是,如果要在Solaris上访问64位
文件
结构,您将无法执行此操作。

64位应用程序不应依赖于访问
文件
数据结构的成员。尝试直接访问专用实现特定的结构成员可能会导致编译错误。现有32位应用程序不受此更改的影响,但应删除对这些结构成员的任何直接使用从所有代码

在Solaris上执行64位编译时,您无法访问
文件
结构。但是,如果您编译32位二进制文件,它应该可以工作

为什么孙这样做

因为Sun(现在是Oracle,至少有一段时间)提供:

在Solaris 2.6或更高版本上构建的二进制应用程序,它使用了stability.5中定义的操作系统接口,可在Oracle Solaris的后续版本(包括其初始版本和所有更新)上运行,即使尚未为这些最新版本重新编译应用程序也是如此

这是Oracle的保证。Sun很久以前的保证实际上更有力,几乎可以说如果您的代码经过编译,以后对Solaris的任何更新都不会破坏它

早期版本的Solaris只有一个8位字段用于
文件
的关联文件描述符。该文件描述符字段可见,构建在早期版本Solaris上的代码使用了它

因此Sun在
文件
结构中为文件描述符保留了一个8位字段

但那是三十多年前的事了——在64位处理器出现之前

而且没有遗留的64位二进制文件,Sun不得不担心它们是二进制的

由于Sun只保证了二进制兼容性,因此Sun将新的64位
文件
结构不透明,因此没有兼容的代码可以访问它。(是的,Sun在20世纪90年代初提供了64位系统。杀死了一家伟大的创新公司。)

Sun确实提供了可供需要同时打开256个以上
文件的程序使用的:

扩展文件工具允许32位进程在标准I/O中使用任何有效的文件描述符(请参阅stdio(3C))C库函数。历史上,32位应用程序仅限于使用前256个数字文件描述符用于标准I/O流。通过使用扩展文件功能,此限制被取消。任何有效的文件描述符都可以用于标准I/O

在:

extendedFILE.so.1是一个过时的空库,仅用于二进制兼容

它以前的用途是,对32位二进制文件使用大于255的文件描述符,现在是Oracle Solaris中的默认行为

libc库现在处理最初由extendedFILE.so.1处理的环境变量

底线是,如果您想访问Solaris上的64位
文件
结构,您不会成为