Как вы компилируете libtasn1 с Visual Studio?

Я новый пользователь 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 …

0

Решение

Вы пробовали файл .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.

0

Другие решения

Я использую 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

через несколько минут все было успешно выполнено

0