问题标签 [solaris-studio]

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 投票
1 回答
472 浏览

c++ - 这是 Solaris Studio 中的错误吗?

源代码(在问题的末尾)会引发我认为是 Solaris Studio(而不是其他编译器)上的错误。

为清楚起见,错误消息已用新行重新格式化:

注意两个函数 runGenEntries 的第一个参数仅相差一个字符(规则末尾的“s”)

当第一个参数的类型为:

当第一个参数不是类型时不会发生:

最终解析为相同的类型!

这是仅在 Solaris 上实现的一些晦涩的 C++ 规则的结果吗?还是当它破坏符号时这是一个 Solaris Studio 错误?

完整的源码

以下源代码可以在任何编译器上进行编译。

定义将激活引发错误的代码,或者激活应该产生相同结果的代码(但这次,没有错误):

此代码是在以下平台上编译的:

0 投票
2 回答
539 浏览

solaris - 在哪里可以找到 solaris 8 的 CC?

我需要在 solaris 8 sparc 上编译 openssl,由于缺少 'cc' 编译器,编译中断。我找不到 Sun cc 的任何工作链接,我发现的只是 Sun Solaris Studio 的断开链接。

[更新]

我发现一些东西看起来像是包含 Solaris Studio 11,但我没有使用它,我设法在本地找到了一些东西。

网址:https ://updates.oracle.com/download/12685437.html

0 投票
0 回答
1069 浏览

c++ - 找不到匹配 std::string::basic_string(std::istreambuf_iterator>,std::istreambuf_iterator

以下无害函数无法在 Solaris Studio 12.3 上编译

失败并显示错误消息

在 中找不到 std::string::basic_string(std::istreambuf_iterator<char, std::char_traits<char>>, std::istreambuf_iterator<char, std::char_traits<char>>)需要的匹配项OOTest::FetchData(const std::string &)

现在我检查了文件std::string,发现以下内容

所以我猜,std::string有一个重载声明

应该匹配的

但不幸的是它没有。

所以我有两个问题

  1. 为什么我的构造std::istreambuf_iterator<char>不匹配?
  2. 这个宏_RWSTD_NO_MEMBER_TEMPLATES是干什么用的?

笔记

  1. 根据评论,我尝试通过运行生成预处理器输出CC -E test.cpp > pre.out,发现没有生成迭代器版本。所以我尝试取消定义_RWSTD_NO_MEMBER_TEMPLATES,但这没有帮助。

如何使用 htaccess 重写 URL 以获得干净的 url(从 url 中删除不必要的参数)

我正在为 PHP 项目开发本地主机。我需要一些解决方案。

当前网址:http://localhost/project/portfolio/php_files/port_sub_sidebar.php?x=opencart

现在,我想在 URL 中显示如下: http://localhost/project/portfolio/opencart

那怎么可能在.htaccess文件中进行更改

0 投票
1 回答
1011 浏览

c++ - C++ 预处理器删除对可变参数宏的调用中的空格 (Solaris Studio 12.3)

Oracle Solaris Studio 12.3 的 C++ 预处理器在扩展__VA_ARGS__.

任何人都可以在他们的系统上确认这种行为吗?这是一个已知的编译器错误吗?有没有解决这个问题的方法?

为了说明,这是一个简单的测试程序,vaargs.c

C 预处理器按预期工作:

但是 C++ 预处理器删除了“hello”和“world”之间的空格:

0 投票
1 回答
1695 浏览

c++ - 尝试使用 Oracle Solaris Studio 12.3 在 Solaris 10 上编译 libpqxx-4.0.1 时出错

问题描述

我无法使用 Solaris Studio 12.3 在 Solaris 10 上编译 libpqxx-4.0.1。

背景

当我需要 libpqxx 时,我做的第一件事就是在 OpenCSW 中使用/opt/csw/bin/pkgutil -a libpqxx. 但是,OpenCSW 中的软件包被列为版本“5.0,REV=2012.05.06”,并且在 OpenCSW网站上查看 CSWlibpqxx5-0 似乎表明这是一个旧的、不稳定的快照。我想要一个稳定的版本。

我从 libpqxx 网站下载了 libpqxx-4.0.1.tar.gz 并编译了它。自从g++我在我的$PATH. 有效。一切都很顺利。我能够SELECT从我的数据库等等。

然后我进入了对我的代码最重要的阶段;与专有的 C++ API 进行通信。g++在我尝试链接到此 API 的库后,我的代码将不再编译。API 包括我之前使用CC. 这些示例不使用 g++. 我想我也必须使用CCas 来编译我的代码,而不是使用g++. 我的代码无法使用CC. g++编译后的 libpqxx-4.0.1有一些CC不喜欢的地方。

因此,我决定我需要使用CC也编译 libpqxx-4.0.1,而不是使用g++.

采取的步骤

为了消除潜在错误配置环境引起的问题(自 2012 年以来,我一直在系统上使用我的帐户,随着时间的推移,各种环境变量等已经积累),我在系统上创建了一个具有干净主目录的新用户。

下面是我接下来所做的记录,导致构建错误。

-bash-3.2$ pwd

-bash-3.2$ ls -al

-bash-3.2$ /usr/sfw/bin/gtar xf libpqxx-4.0.1.tar.gz

Python 2.4.6,/usr/bin/python在 Solaris 10 中遇到了脚本问题,所以我做了一个快速而肮脏的补丁。

-bash-3.2$ diff libpqxx-4.0.1/tools/splitconfig splitconfig

-bash-3.2$ cp splitconfig libpqxx-4.0.1/tools/

$PATH在这一点上只是/usr/bin

-bash-3.2$ echo $PATH

我需要ld。它位于/usr/ccs/bin.

-bash-3.2$ export PATH=$PATH:/usr/ccs/bin

CC来自 Oracle Solaris Studio 12.3。(请参阅标题附加信息下的详细信息。)

-bash-3.2$ which CC

-bash-3.2$ cd libpqxx-4.0.1

-bash-3.2$ ./configure --prefix=/var/tmp/build/install_test --enable-shared --enable-documentation

makefrom/usr/ccs/bin之前无法构建它,所以现在我尝试使用 dmakeOracle Solaris Studio 12.3。

-bash-3.2$ which make

-bash-3.2$ which dmake

-bash-3.2$ dmake

附加信息

-bash-3.2$ cat /etc/release

-bash-3.2$ /usr/bin/version

-bash-3.2$ pkgchk -l -p /usr/bin/CC

-bash-3.2$ pkginfo | grep SPRO

0 投票
1 回答
538 浏览

c++ - 如何构建独立于编译器的 C++ 库(用于 Solaris Studio 和 gcc)?

我想扩展我的库,它目前只使用 gcc 编译,以供 Solaris Studio 使用。

我的想法是执行以下操作:

  1. 用 C 语言编写包装函数,通过外部 C链接公开接口的相关部分。
  2. 然后使用 gcc 构建这个库。生成的 c-header 和二进制文件是独立于编译器的,因为不再有名称修饰。
  3. 将 c-header 和链接包含到使用 Solaris Studio 编译的项目中。

问题:这是一种可行的方法还是有更好的解决方案?


注意:除了名称修饰之外,还要注意与异常处理相关的问题

0 投票
1 回答
1148 浏览

c++ - 如何使用 Solaris Studio 12.4 编译器构建 Boost V1.57

我尝试在 Intel Solaris V11.2 平台上使用全新的 Solaris Studio 12.4 编译器构建 Boost V1.57。我试图在OTN 开发论坛上发布错误,但结果是我的简单 OTN 帐户不允许我添加新帖子。因此,SO的问题。

简要总结:1)自举成功:

2)构建命令行(注意我把b2和编译器放在我的PATH. 这是一个“阶段”构建,即没有安装步骤,只是为了看到所有的库都可以构建:

这是一个压缩的错误列表:

IMO 任何体面的 C++ 编译器都应该能够构建 Boost,因为我几乎无法想象没有 Boost 库的任何严肃的 C++ 项目。所以我只是想知道 Boost 或 Solaris Studio 开发人员是否会阅读这篇文章并帮助我解决一些补丁......

非常感谢任何提示!

0 投票
2 回答
559 浏览

c++ - 常量添加无效?错误:不能使用 char** 来初始化 const char**

Solaris Studio 正在生成最令人费解的错误消息。

错误信息是:

第 161 行:错误:无法使用 char** 来初始化 const char**。

为什么添加constness 会成为问题?我卡住了,请帮帮我...


指针 char* inbufptr 指向数组的开头,并且不承诺保持任何常量。

现在,如果我现在有一个指针 char const **inbufptr_pos 这种类型保证不会更改数组的内容,但我仍然可以更改指针指向的位置。如果我这样做,我没有更改数组,我看不出有什么问题。

0 投票
1 回答
82 浏览

c++ - C++ 通过引用在 LP64 中更改我的指针值。我应该看什么?

我深入了解 synergy-project.org 的旧版本(1.3.4),在 Solaris Studio 12.4 上构建它 在这个程序中有 2 个地方使用参数指针调用函数,并且指针被破坏方式。在-m64中编译和链接。我可以在构建标志或其他方面查看什么来弄清楚为什么这是乱码?在下面的日志中,程序在看到错误指针的函数内部设置了断点。它的父级(堆栈上的“向上”)具有正确的数据:

编码:

...其中 m_parser 解析为:

...请注意 m_parser 是如何随着 comm 协议的移动而重新加载的。

回答关于进入函数的问题:它在进入函数时被破坏,并导致函数很快崩溃。如果我将“parseHandshakeMessage() 硬编码到 handleData() 中,它可以正常工作。但是,我在这个系统中有其他示例依赖函数指针正常工作。我可能会发布编译标志,它们是多余的和广泛的。

0 投票
1 回答
1243 浏览

c++ - Solaris SunStudio 12.4 标准库链接问题

我正在尝试使用 SunStudio 12.4 从 Solaris-10 上的 boost-asio 编译示例。使用 GCC 4.9.2 进行编译是可行的,但我需要同时支持这两种编译器,因此不能只切换。

CC -V 输出: CC: Sun C++ 5.13 SunOS_sparc 2014/10/20

编译行:(对于每个 cpp 文件)

CC -m32 -std=c++11 -I./asio-1.10.6/include -I./boost/include/boost-1_58 -c *.cpp -o *.o

Linker Line:(注意 *.o 实际上是之前生成的所有目标文件的列表)

CC -m32 -L./boost/sparc/sun/release32/lib *.o -o httpServer -lCrun -lCstd -lxnet -lboost_system

问题:

我得到一堆标准库东西的未解析符号(如字符串、ios_base、语言环境等)。我在这里发布了链接器错误。

我强烈怀疑这与使用-std=c++11. 由于iterator_traits. 尽管iterator_traits不是 C++11 功能,但由于某种原因,SunStudio 无法编译它,除非它在 ​​c++11 模式下编译。关于的错误iterator_traits

Error: iterator_traits is not a member of std.

导致此编译失败的代码在 boost 中boost/detail/iterator.hpp。代码如下。

包含和使用此标头的其他内容会生成错误,例如Error: iterator_traits is not a member of boost::detail,然后是其他语法错误,因为现在它认为以下所有代码都是无效的。

我尝试过的其他事情:

  • 在 -lCrun 之前添加 -lC (链接器找不到该库)
  • 添加 -lc (类似问题)。
  • 查看 SUNWspro/libs 目录,发现 libCrun.so 和 libCstd.so 都存在。
  • 将 -lCstd 放在 -lCrun 之前

其他(不太相关)信息:

  • SPARC
  • 有问题的 asio 示例是 httpServer (我相信它在示例中的服务器目录下)