0

全部,

如果这属于 SO 的 Unix/Linux 部分,请先道歉。但是这个问题在这两个之间有一条非常细的界限。如果你觉得我应该在那里发帖,请告诉我,我会移动它。所以这里是:

我试图在 Oracle Solaris 上编译一个程序,该程序可以使用 Solaris Studio 在 Linux 上成功构建。

但是,我在使用 STL 功能时遇到了很多链接器错误。我的猜测是生成的 Makefile 是针对 Linux/gcc 的,它没有考虑其他任何内容。

在 Solaris 中搜索符号的方法是什么?

为 Makefile 生成的命令是:

伊戈尔·科罗特

4 月 16 日,星期二,晚上 7:26(15 小时前)

to wx-dev 您好,我正在尝试查看 wxWidgets 3.1.1 是否可以在带有最新 Solaris Studio 12.6 的 Oracle Solaris 上使用。

但是,该库正确编译,当我尝试构建最小时,我得到了这个:

igor@solaris:~/wxWidgets/buildSol/samples/minimal$ make
CC -o minimal   minimal_minimal.o
-L/export/home/igor/wxWidgets/buildSol/lib
-R/export/home/igor/wxWidgets/buildSol/lib -mt  -lwx_gtk3u_core-3.1
-lwx_baseu-3.1        -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0
-latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0
-lgobject-2.0 -lgthread-2.0 -lglib-2.0 -lX11 -lXxf86vm -lSM -lgtk-3
-lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo
-lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lnotify
-lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lXtst
-lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig
-lfreetype -lpng -lz -ljpeg -ltiff -llzma  -lwxregexu-3.1  -mt    -lz
-lsecret-1 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lm -lz -lsecret-1
-lgio-2.0 -lgobject-2.0 -lglib-2.0 -lm

以下是它产生的几个错误:

Undefined                       first referenced
 symbol                             in file
std::wstring::_M_rep()const
/export/home/igor/wxWidgets/buildSol/lib/libwx_gtk3u_core-3.1.so
jpeg_CreateDecompress(jpeg_decompress_struct*, int, unsigned int)
/export/home/igor/wxWidgets/buildSol/lib/libwx_gtk3u_core-3.1.so
std::wstring::capacity()const
/export/home/igor/wxWidgets/buildSol/lib/libwx_gtk3u_core-3.1.so
jpeg_resync_to_restart(jpeg_decompress_struct*, int)
/export/home/igor/wxWidgets/buildSol/lib/libwx_gtk3u_core-3.1.so
std::streambuf::pbackfail(int)
/export/home/igor/wxWidgets/buildSol/lib/libwx_gtk3u_core-3.1.so
std::wstring::insert(__gnu_cxx::__normal_iterator<wchar_t*,
std::wstring>, wchar_t)
/export/home/igor/wxWidgets/buildSol/lib/libwx_baseu-3.1.so
std::wstring::basic_string()
/export/home/igor/wxWidgets/buildSol/lib/libwx_baseu-3.1.so
std::wstring::basic_string() minimal_minimal.o
std::wstring::~basic_string()
/export/home/igor/wxWidgets/buildSol/lib/libwx_baseu-3.1.so
std::wstring::~basic_string() minimal_minimal.o
std::wstring::operator=(wchar_t)
/export/home/igor/wxWidgets/buildSol/lib/libwx_gtk3u_core-3.1.so

蒂亚!

4

1 回答 1

0

我认为这是一个 C++ 标准库问题。那里有不同的 C++ 实现。看看您是否可以在 Solaris 上找到与您的相匹配的另一个编译器/库。

于 2019-04-25T21:54:11.177 回答