Я новый пользователь libtasn1 (пытается проверить эту библиотеку снова google protobuf).... на самом деле пытается стать новым пользователем....
Я не могу сделать эту библиотеку компиляцией под Windows (используя Visual Studio 2010).
Загрузила последнюю версию (4.2) отсюда: http://ftp.gnu.org/gnu/libtasn1/ Затем я запустил configure
(мне пришлось сначала установить Cygwin, чтобы sh.exe, ar.exe....) из командной строки Visual Studio 2010. Это, по-видимому, работало и выводилось:
version: 4.2 shared 9:2:3
Host type: i686-pc-cygwin
Install prefix: /usr/local
Compiler: gcc -std=gnu99
Warning flags: errors: warnings:
Library types: Shared=yes, Static=yes
Valgrind:
Version script: yes
И теперь я не могу продолжать строить. Вот что я пробовал:
Открыт libtasn1.sln, указанный в zip. Первая ошибка сообщила, что config.h не найден (+ другой файл заголовка). После обновления include path у меня были более значимые ошибки, такие как C2054, inline static
в нескольких командах заголовков при компиляции ASN1.c (который является C и inline static
недействителен в C....).
Я отказался здесь и попытался скомпилировать непосредственно из командной строки Visual, набрав "nmake". Он был коротким, сразу получил ошибку:
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation. Tous droits réservés.
makefile(269) : fatal error U1001: erreur de syntaxe : caractère non conforme '{' dans la macro
Stop.
Наконец, я попытался скомпилировать MinGW (используя mingw32-make.exe). То же самое, сразу же получил ошибку:
process_begin: CreateProcess(NULL, /usr/bin/sed -n s/^\(sc_[a-zA-Z0-9_-]*\):.*/\
1/p ./maint.mk ./cfg.mk, ...) failed.
'test' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
make all-recursive
process_begin: CreateProcess(NULL, make all-recursive, ...) failed.
make (e=2): Le fichier spécifié est introuvable.
Makefile:928: recipe for target 'all' failed
mingw32-make.exe: *** [all] Error 2
На веб-сайте libtasn1 говорится:
Код должен работать на всех Unix-подобных операционных системах и Windows.
Хорошо, но как его построить? Я не мог найти какую-либо информацию на веб-сайте или в файле INSTALL...
Вы пробовали файл.sln в подкаталоге Windows?
Это, очевидно, работало
Ключевое слово здесь "очевидно". При запуске configure
он исследует среду сборки и создает make файл, который подходит именно для этой среды. Поскольку вы запускали configure с помощью Cygwin sh.exe, он создал make файл для среды Cygwin (см. "Тип хоста" и "Компилятор: значения"). Поэтому, даже если configure
создал отсутствующий config.h
, контент подходит для Cygwin с GCC, а не с Windows с MSVC.
configure
создает make файлы, которые GNU make и многие другие программы Unix-y make могут понять. Microsoft nmake (когда я в последний раз смотрел на него) понимал гораздо более ограниченный и несовместимый язык. Вы не можете использовать make файл, созданный configure
с помощью nmake.
Для MinGW вы пытались использовать windows/libtasn14win.mk?
Примечание: на FTP-сайте GNU для libtasn1, последние двоичные файлы Windows для версии 3.3 :(
Вы можете захотеть, как в списке рассылки help-libtasn1, для подсказок о том, как создавать двоичные файлы Windows. Понятно, что сборка Windows получает меньше внимания, чем остальная часть libtasn1.
Я запускаю ubuntu linux 14.04
Я использовал вашу ссылку для загрузки новейшего... gz файла
Я использовал утилиту для распаковки файла в файл ../Downloads/libtasn1/
который сгенерировал множество подкаталогов и файлов
Я открыл нормальное командное окно cd'd в главном каталоге:../Downloads/libtasn1/libtasn1-4.2, тогда я прочитал несколько файлов в этом каталоге. Один из этих файлов указал, что я должен ввести: ./configure && make && make install
Я делал это по указанию. результатом были определенные защищенные каталоги, которые не позволяли бы вставлять новые файлы
Я открыл корневое командное окно cd'd в главном каталоге: ../Downloads/libtasn1/libtasn1-4.2
затем ввел: ./configure && make && make install
через несколько минут все было успешно выполнено