libiconv solaris-64 бита sparc / opteron

#gcc #64-bit #solaris #iconv #sparc

#gcc #64-разрядный #solaris #iconv #sparc

Вопрос:

У меня 64-разрядные системы solaris — sparc и opteron. В /usr/local /lib я вижу libiconv.so для обеих систем. Команда file на libiconv.so выдает следующий вывод:-

 ELF 32-bit LSB dynamic lib 80386 Version 1, dynamically linked, not stripped, no debugging information available
  

Как мне создать 64-разрядный libiconv без нарушения работы существующих 32-разрядных систем как на sparc, так и на opteron? Причина в том, что я не осведомлен о существующей версии libiconv.

Ответ №1:

Это libiconv.so не является частью операционной системы, находящейся в нестандартном / usr / local /lib. Если вы хотите собрать самостоятельно или установить из другого места 64-разрядную версию этой библиотеки, вам следует установить ее в /usr/local/lib /amd64 или /usr /local /lib /64.

Однако, это, вероятно, бесполезно в первую очередь, поскольку Solaris уже включает библиотечную функцию iconv в свою стандартную библиотеку C, поэтому Gnu libiconv здесь в основном избыточен и не нужен.

Комментарии:

1. @jilliagre.. Спасибо за вашу помощь. Мне пришлось использовать -liconv в makefile, чтобы создать ссылку на libiconv. У меня есть #включить<iconv.h> в файл .cpp. Если iconv является частью стандартной библиотеки C, что я должен использовать в своем makefile для ссылки как на 32, так и на 64-разрядный iconv?

2. @jilliagre.. Спасибо за вашу помощь. Мне пришлось использовать -liconv в makefile, чтобы создать ссылку на libiconv. У меня есть #включить<iconv.h> в файл .cpp. Если iconv является частью стандартной библиотеки C, что я должен использовать в своем makefile для ссылки как на 32, так и на 64-разрядный iconv? Мне нужно использовать -liconv, чтобы избавиться от ошибок «неопределенный символ». И когда я использую -liconv, он будет разрешен в /usr/ local/lib / libiconv.so, который является 32-разрядным.

3. Вы никогда не ссылаетесь на обе 32- и 64-разрядные библиотеки, это либо одна, либо другая, в зависимости от того, что вы создаете. Какие неопределенные символы вы наблюдаете?

4. @jlliagre.. Извините, я имел в виду, что у меня есть 2 отдельных make-файла для 32/64 бит. Если я не использую -liconv, я получаю «неопределенный символ libiconv_open, libiconv_close». Я вызываю iconv_open() в моем исходном файле .cpp, чтобы получить конвертер iconv_t, который используется в вызове iconv (). Еще раз спасибо за вашу помощь.

5. Почему iconv_open преобразуется в libiconv_open? Возможно, где-то в вашем коде или в коде, который вы включаете, есть поддельное определение.