Я новый пользователь libtasn1 (пытаюсь снова сравнить эту библиотеку с protobuf от Google) …. на самом деле пытаюсь стать новым пользователем ….
Я не могу заставить эту библиотеку компилироваться под 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’s sh.exe, он создал make-файл для среды Cygwin (см. Значения Тип хоста: и Компилятор:). Так что даже если configure
создал пропавший config.h
содержимое подходит для Cygwin с GCC, а не для Windows с MSVC.
configure
создает make-файлы, которые делает GNU, и многие другие программы Unix-y make могут понять. Microsoft nmake (когда я в последний раз смотрел на нее) понимает гораздо более ограниченный и несовместимый язык. Вы не можете использовать make-файл, созданный configure
с нмаке.
Для MinGW вы пробовали использовать windows / libtasn14win.mk?
Примечание: на FTP-сайте GNU для libtasn1 последние двоичные файлы Windows предназначены для версии 3.3 🙁
Возможно, вы захотите, чтобы в списке рассылки help-libtasn1 содержались советы о том, как создавать двоичные файлы Windows. Понятно, что сборка Windows получает меньше внимания, чем остальная часть libtasn1.
Я использую Ubuntu Linux 14.04
Я использовал вашу ссылку, чтобы загрузить новейший файл … gz
Я использовал утилиту, чтобы распаковать файл в ../Downloads/libtasn1/
который генерировал десятки подкаталогов и файлов
Я открыл нормальное командное окно
Перейдите в основной каталог: ../Downloads/libtasn1/libtasn1-4.2, затем я прочитал несколько файлов в этом каталоге.
Один из этих файлов указал, что я должен ввести:
./configure && make && make install
Я сделал как указано. В результате некоторые защищенные каталоги не позволяли вставлять новые файлы.
Я открыл окно командной строки
перейдите в основной каталог: ../Downloads/libtasn1/libtasn1-4.2
затем вошли:
./configure && make && make install
через несколько минут все было успешно выполнено