我有一个安装了Solaris 10 SPARC的sun服务器。 我已经使用tarball源代码成功安装了libevent和openssl。我正在尝试使用gnu gmake编译tor-0.2.5.16。我在solaris终端上遇到以下问题,如下所述
CCLD src/test/test
Undefined first referenced
unsetenv src/test/src_test_test-test-util.o
setenv src/test/src_test_test-test-util.o
ld: fatal: Symbol referencing errors. No output written to src/test/test
我从这里去哪里?
答案 0 :(得分:1)
setenv()
和unsetenv()
是POSIX 6 / SUSv3 / XPG6功能。如果您安装的是Solaris 10的较早版本,则它可能早于POSIX 6,并且可能没有setenv()
或unsetenv()
。如果您的安装中包含/usr/include/stdlib.h
和setenv()
,则unsetenv()
中将包含以下内容:
#if defined(__EXTENSIONS__) || \
(!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \
defined(_XPG6)
extern int posix_memalign(void **, size_t, size_t);
extern int posix_openpt(int);
extern int setenv(const char *, const char *, int);
extern int unsetenv(const char *);
#endif
请注意,要使用这些功能,必须具有特定的值#define
。不要尝试直接#define
。对于the standards.5
man page,您必须#define
或使用-D
编译器选项_XOPEN_SOURCE=600
。而且您绝对不能定义_XOPEN_SOURCE_EXTENDED
。如果_XOPEN_SOURCE_EXTENDED
与_XOPEN_SOURCE
一起定义,则将获得SUS / XPG4v2,而不是SUS3 / XPG6。
答案 1 :(得分:0)
我尝试了OPENCSW gcc-4.6.3,我也没有工作。话虽这么说,我已经成功地编译并安装了tor-0.2.4.20。你是对的。这与我使用的GCC编译器有关(太旧了),因此我不得不使用旧版的tor。谢谢您的帮助。非常感激!!!我可能需要协助来安装gcc-9.1.0 tarball。如果遇到问题,将启动一个新线程。 :):)