Компилиране на tor в Solaris SPARC 10

Имам сървър слънце с инсталиран Solaris 10 SPARC. Успешно инсталирах libevent, както и openssl, използвайки изходния код на tarball. Опитвам се да компилирам tor-0.2.5.16 с помощта на gnu gmake. Срещнах следния проблем на моя терминал 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

Къде да отида оттук?


person greenelephant    schedule 14.06.2019    source източник
comment
Трябва да внедрите setenv и unsetenv въз основа на putenv и getenv.   -  person Lorinczy Zsigmond    schedule 14.06.2019


Отговори (2)


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'd. Не се опитвайте да ги #define директно. Съгласно страницата standards.5 man трябва да #define или да използвате -D опцията на компилатора _XOPEN_SOURCE=600. И вие не трябва изобщо да дефинирате _XOPEN_SOURCE_EXTENDED. Ако _XOPEN_SOURCE_EXTENDED е дефинирано заедно с _XOPEN_SOURCE, ще получите SUS/XPG4v2, а не SUS3/XPG6.

person Andrew Henle    schedule 14.06.2019
comment
Здравей Андрю. благодаря за бързия отговор. направих грешка Използвам Solaris SPARC 5.9, а не Solaris 10 SPARC. Моля, игнорирайте заглавието на тази тема. Въз основа на тази актуализация по-горе. Как ще се отрази на информацията, която току-що ми предоставихте? - person greenelephant; 14.06.2019
comment
@greenelephant Solaris 9 поддържа само до SUSv2/XPG4v2. Вижте en.wikipedia.org/wiki/Single_UNIX_Specification#Solaris - person Andrew Henle; 14.06.2019
comment
Има ли tarballs или функции, които могат да инсталират/надстроят до POSIX 6/SUSv3/XPG6 функции в Solaris 9? - person greenelephant; 14.06.2019
comment
Въпреки това се опитах да инсталирам изходния код на Tor в Solaris 01 SPARC и получавам следната грешка - person greenelephant; 14.06.2019
comment
gcc: неразпозната опция '-rdynamic' - person greenelephant; 14.06.2019
comment
символът [[ГОЛЯМА ПРАЗНИНА]] е споменат за първи път - person greenelephant; 14.06.2019
comment
__stack_chk_fail [[голяма празнина]] /src/или/tor_main.o - person greenelephant; 14.06.2019
comment
__stack_chk_guard [[голяма празнина]] /src/или/tor_main.o - person greenelephant; 14.06.2019
comment
ld: фатално: грешки при рефериране на символи. Няма изход, записан в /src/или/tor - person greenelephant; 14.06.2019
comment
collect2: ld: върна 1 изходен статус - person greenelephant; 14.06.2019
comment
Какво да правя след това, Андрю Хенле? - person greenelephant; 14.06.2019
comment
@greenelephant Какъв изходен код се опитвате да инсталирате? Най-лесното нещо зависи от това колко пъти източникът, който се опитвате да компилирате, използва setenv() и unsetenv(). Ако използва тези функции много, трябва да направите както Lorinczy Zsigmond заяви в коментара си - да ги внедрите сами, като използвате putenv() и getenv(). Трябва да можете да намирате примери доста лесно. Ако кодът, който се опитвате да компилирате, използва само setenv()/unsetenv() няколко пъти, пренапишете тази част от кода, за да използвате putenv() и setenv(), за да направите същото. Внимавайте и с проблемите с нишките. - person Andrew Henle; 14.06.2019
comment
Здравей Андрю. Наистина трябва да започна нова тема. вече не използвам Solaris 9 и вместо това използвам Solaris 10, тъй като това ще разреши проблемите с unsetenv и setenv. Затова се опитвам да инсталирам изходния код на tor 0.2.5.16 в Solaris 10 SPARC. Грешките, които срещам този път, са __stack_chk_fail и __stack_chk_guard, когато се опитвам да компилирам /src/or/tor_main.o. Надявам се това да изясни ситуацията ми с вас. ((Сега използвам Solaris 10 SPARC, така че не трябва да се справям с проблемите със setenv и unsetenv, които имах преди) . Ще чакам вашия отговор относно проблема с tor_main.o - person greenelephant; 14.06.2019
comment
@greenelephant Използвате ли gcc за компилиране? Вероятно имате някъде несъответствие на версията или версията на Solaris 10 е твърде стара. Ако търсите __stack_chk_fail, има много въпроси и отговори. Едно от тях вероятно е подходящо. - person Andrew Henle; 14.06.2019
comment
Да, използвам gcc, за да се опитам да компилирам tor-0.2.5.16. това е стандартният пакет, който идва със Solaris 10 SPARC (т.е. SUNWgcc SUNWgccruntime) - person greenelephant; 14.06.2019
comment
Ще пробвам OPENCSW пакети за gcc и ще ви кажа как се справям :) - person greenelephant; 14.06.2019

Опитах OPENCSW gcc-4.6.3, и аз не работих. Като се има предвид това, успях да компилирам и инсталирам tor-0.2.4.20 вместо това. Ти беше права. Това беше проблем относно GCC компилатора, който използвах (твърде стар), така че трябваше да използвам по-стара версия на tor вместо това. Все пак благодаря за помощта. Оценявам го!!! Все пак може да имам нужда от помощ за инсталиране на gcc-9.1.0 tarball. Ще започна нова тема, ако срещна проблеми. :) :)

person greenelephant    schedule 15.06.2019