Задать вопрос
@nick88hello

Как конвертировать статическую библиотеку ( fileName.a ) в разделяемую ( fileName.so ) с помощью gcc ?

Пытаюсь собрать расширение zip для php :

phpize

     ./configure 
              --disable-static
             --enable-shared
             --enable-zip
             --with-php-config=/usr/local/bin/php-config

      make

     make install


Но после компиляции создаются файлы: zip.a и zip.la , а нужен - zip.so

Пытался сделать следующее :

// stackoverflow.com/questions/6263780/how-to-create-a-shared-object-file-from-static-library
       
gcc -shared -o zip.so -Wl,--whole-archive zip.a

 ошибка: выполнение ld завершилось с кодом возврата 1
  • Вопрос задан
  • 2445 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Может быть просто
ld -shared -o zip.so --whole-archive zip.a
Ответ написан
Комментировать
@nick88hello Автор вопроса
К сожалению не помогло . Везде одна и та же ошибка : ... undefined reference to ...

Вот фрагмент :
ld -shared -o zip.so --whole-archive zip.a

/usr/src/zip/php_zip.c:3155: undefined reference to `php_info_print_table_start'
/usr/src/zip/php_zip.c:3157: undefined reference to `php_info_print_table_row'
/usr/src/zip/php_zip.c:3158: undefined reference to `php_info_print_table_row'
/usr/src/zip/php_zip.c:3159: undefined reference to `php_info_print_table_row'
/usr/src/zip/php_zip.c:3160: undefined reference to `php_info_print_table_row'
zip.a(php_zip.o): In function `zm_shutdown_zip':
/usr/src/zip/php_zip.c:3144: undefined reference to `zend_hash_destroy'
/usr/src/zip/php_zip.c:3145: undefined reference to `php_unregister_url_stream_wrapper'
zip.a(php_zip.o): In function `php_zip_free_entry':
/usr/src/zip/php_zip.c:1202: undefined reference to `_efree'
zip.a(php_zip.o): In function `php_zip_free_dir':
/usr/src/zip/php_zip.c:1185: undefined reference to `_efree'
/usr/src/zip/php_zip.c:1180: undefined reference to `php_error_docref0'
zip.a(php_zip.o): In function `php_zip_object_new':
/usr/src/zip/php_zip.c:1134: undefined reference to `_emalloc'
/usr/src/zip/php_zip.c:1144: undefined reference to `zend_object_std_init'
/usr/src/zip/php_zip.c:1156: undefined reference to `object_properties_init'
/usr/src/zip/php_zip.c:1158: undefined reference to `zend_objects_store_put'
zip.a(php_zip.o): In function `php_zip_object_free_storage':
/usr/src/zip/php_zip.c:1098: undefined reference to `_efree'
/usr/src/zip/php_zip.c:1100: undefined reference to `_efree'
/usr/src/zip/php_zip.c:1106: undefined reference to `zend_object_std_dtor'
/usr/src/zip/php_zip.c:1120: undefined reference to `_efree'
/usr/src/zip/php_zip.c:1090: undefined reference to `php_error_docref0'
zip.a(php_zip.o): In function `c_ziparchive_getExternalAttributesIndex':
/usr/src/zip/php_zip.c:2304: undefined reference to `zend_object_store_get_object'


Помогите пожалуйста , как правильно слинковать все необходимое , какие параметры еще нужно указать ? Компилить исходники для *.nix систем - это не моя епархия . Поэтому прошу совета у знатоков...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы