Форум программистов, компьютерный форум CyberForum.ru

Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
WebRockefeller
5 / 5 / 1
Регистрация: 28.04.2012
Сообщений: 26
23.12.2013, 00:20     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов #1
Доброе время суток уважаемые программисты!
В языке C++ я даже не новичок, а лузер (так пару dll делал).
Я редко у кого прошу помощи, обычно ищу и нахожу сам. Но вот появилась проблема, вот уже несколько месяцев пытаюсь её решить. Пытаюсь откомпилировать библиотеку Sqlite3.dll с официального сайта sqlite.org скачиваю исходник sqlite-amalgamation-3080200.zip компилирую Visual C++ 6. И у меня библиотека получается в несколько раз больше чем у самих разработчиков. Пытался откомпилировать через makefile.vc, nmakehlp.c, rules.vc (они находятся в файле sqlite-autoconf-3080200.tar.gz в папке \tea\win\). Но даже не понял, как и что там делать, как добавить и как сделать.

Убедительная просьба, объяснить или рассказать как откомпилировать исходники sqlite3 через makefile.vc, что бы откомпилированный файл весил столько же сколько и файл разработчиков (что бы не было разного хлама). Желательно более подробно и в Visual C++ 6. Так же если не сложно рассказать, как откомпилировать OpenSSL (но это не так важно как sqlite3).

Заранее очень благодарен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2013, 00:20     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов
Посмотрите здесь:

компиляция в Microsoft Visual Studio 2008 C++
C++ компиляция файла ms visual studio 2010
компиляция больших проектов в Visual C++ 6.0 C++
C++ Долгая компиляция MS Visual Studio 2012
C++ Компиляция dll библиотеки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14188 / 6203 / 984
Регистрация: 02.05.2013
Сообщений: 10,331
Завершенные тесты: 1
23.12.2013, 01:18     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов #2
Цитата Сообщение от WebRockefeller Посмотреть сообщение
Пытаюсь откомпилировать библиотеку Sqlite3.dll с официального сайта sqlite.org скачиваю исходник sqlite-amalgamation-3080200.zip компилирую Visual C++ 6. И у меня библиотека получается в несколько раз больше чем у самих разработчиков.
Может, пора уже осовременить компилятор и пересесть на более новую версию Visual C++ ?
Все-таки Visual C++ 6.0 уже полтора десятка лет. Я вот сейчас ради интереса попробовал
пересобрать SQLite dll в Visual C++ 2013 - получил dll-ку размером чуть меньше оригинальной.
Еще под x64 можно собирать. Think about, как говорится.

Цитата Сообщение от WebRockefeller Посмотреть сообщение
Так же если не сложно рассказать, как откомпилировать OpenSSL
Вот, писал для себя совсем недавно (рецепт для Visual C++ 2008 SP1):
Кликните здесь для просмотра всего текста

Сборка OpenSSL.
-----------------

1) Установить ActiveState Perl (я ставил версию 5.16.3.1603).

2) Установить ассемблер nasm, лучше в папку без пробелов, например C:\nasm.
Я ставил версию 2.10.09. Путь к папке C:\nasm нужно прописать в переменных окружения.

3) Распаковать архив с исходниками OpenSSL в любое место, например C:\System\Libraries\OpenSSL.

4) Установить Visual Studio 2008, поставить Service Pack 1.

5) Установить Windows 7 SDK, настроить Configuration Tool с помощью WindowsSdkVer.

6) Открыть Visual Studio 2008 Command Prompt, войти в папку с исходниками, выполнить команду:

perl Configure VC-WIN32 --prefix=C:\Ready\OpenSSL

VC-WIN32 должен быть в верхнем регистре, а C:\Ready\OpenSSL - это путь, куда потом
будут скопированы собранные модули OpenSSL.

Если нужно выполнить отладочнкую сборку, тогда следует использовать токен debug-VC-WIN32.

Также, по умолчанию OpenSSL собирает движки (engines) в виде отдельных dll.
Если нужно собирать их статически, следует применять дополнительный ключ enable-static-engine:

perl Configure VC-WIN32 enable-static-engine --prefix=C:\Ready\OpenSSL

Для статической сборки OpenSSL этот ключ не нужен.

7) Выполнить там же команду ms\do_nasm.
Это вызовет сборку ассемблерных модулей.

8) Выполнить команду:

nmake -f ms\ntdll.mak

После этого будет собрана OpenSSL.

9) Далее следует запустить тесты:

nmake -f ms\ntdll.mak test

10) И скопировать собранные модули OpenSSL в install-папку:

nmake -f ms\ntdll.mak install

OpenSSL не копирует pdb-файлы, это нужно сделать вручную.
Достаточно файла lib.pdb, он нужен только для static-варианта.



Получится Win32-сборка OpenSSL, конфигурация Runtime-Library = Multi-Threaded Dll.

Если нужно собрать статическую библиотеку, тогда вместо ntdll.mak следует
использовать nt.mak:

nmake -f ms\nt.mak
nmake -f ms\nt.mak test
nmake -f ms\nt.mak install



Сборка для x64 ничем не отличается от сборки для Win32, только вместо
VC-WIN32 следует использовать VC-WIN64A, а вместо ms\do_nasm - ms\do_win64a.
И нужно открывать 64-битный Visual Studio 2008 Command Prompt.
WebRockefeller
5 / 5 / 1
Регистрация: 28.04.2012
Сообщений: 26
23.12.2013, 01:25  [ТС]     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов #3
Большое спасибо! А можно узнать как именно собирать SQlite проект, какие файлы нужно компилить и как их присоединить, если не сложно! Даже на VC++ 2013. И еще вопрос в XP не потребуется качать всякие дополнения типа NetFrework 1-4 после компиляции в нем?
Убежденный
Системный программист
 Аватар для Убежденный
14188 / 6203 / 984
Регистрация: 02.05.2013
Сообщений: 10,331
Завершенные тесты: 1
23.12.2013, 01:30     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов #4
Цитата Сообщение от WebRockefeller Посмотреть сообщение
А можно узнать как именно собирать SQlite проект, какие файлы нужно компилить и как их присоединить, если не сложно!
Достаточно подключить к проекту файлы sqlite3.c и sqlite3.h.
Если нужна dll-ка, тогда следует указать компоновщику, чтобы он использовал
def-файл (он есть в архиве с sqlite.dll). Все это можно сделать визуально, через
solution explorer и настройки проекта. Правда, некоторых функций, объявленных в
def-файле, компоновщик не находит, я просто убирал их оттуда.

Цитата Сообщение от WebRockefeller Посмотреть сообщение
И еще вопрос в XP не потребуется качать всякие дополнения типа NetFrework 1-4 после компиляции в нем?
Не потребуется. Но Visual Studio, начиная с 2012, не очень-то дружит с XP,
несмотря на всякие xp-тулсеты, так что я советую использовать VS2005-2008-2010,
что-нибудь из этого трио, не старше и не младше.
WebRockefeller
5 / 5 / 1
Регистрация: 28.04.2012
Сообщений: 26
23.12.2013, 01:48  [ТС]     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов #5
Ура! Большое спасибо! Уже замучился искать. Как сделаю выложу сюда подробную инструкцию! Скинь номер мобильного (и кто оператор) или номер WebMoney в личку (много не смогу, сколько сейчас есть)! От души еще раз!
gazlan
2857 / 1805 / 271
Регистрация: 27.08.2010
Сообщений: 4,888
Записей в блоге: 1
23.12.2013, 03:12     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов #6
Цитата Сообщение от WebRockefeller Посмотреть сообщение
что бы откомпилированный файл весил столько же сколько и файл разработчиков
Не помню уже точных цифр, но при всех возможных оптимизациях (MSVC 6.0) больше сотни Kb на DLL (Release) выиграть не получалось. При том, что Upack сжимает ее почти вдвое. И учитывая частые обновления, смысла компилировать этот (ужасный) код не вижу: проще взять готовую DLL и не расстраиваться, глядя в исходники.
WebRockefeller
5 / 5 / 1
Регистрация: 28.04.2012
Сообщений: 26
23.12.2013, 03:33  [ТС]     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов #7
Цитата Сообщение от gazlan Посмотреть сообщение
проще взять готовую DLL и не расстраиваться, глядя в исходники.
Большое спасибо за уделенное внимание!
Но только есть одна проблема! Я компилирую по той причине, что вношу изменения в исходный код. Я вначале чуть со стула не упал когда добавил 10 строчек кода, и получил в 10 раз больше размер. Потом попробовал без внесения своего кода, и тоже обалдел.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2013, 03:42     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов
Еще ссылки по теме:

Компиляция dll на win8x64 и ошибка на winXP C++
C++ хочу написать программу,нужны умные мозги)
Структура "Сканер". Нужны советы профессионалов по программе C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gazlan
2857 / 1805 / 271
Регистрация: 27.08.2010
Сообщений: 4,888
Записей в блоге: 1
23.12.2013, 03:42     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов #8
Цитата Сообщение от WebRockefeller Посмотреть сообщение
и получил в 10 раз больше размер
Поставьте оптимизацию по размеру, используйте динамические библиотеки, компилируйте Release-версию, добавьте в проект слияние секций (MSVC 6.0 ONLY!) и, окончательно, упакуйте Upack 0.399:
C++
1
2
3
4
#ifdef NDEBUG
#pragma optimize("gsy",on)
#pragma comment(linker,"/FILEALIGN:512 /MERGE:.rdata=.text /MERGE:.data=.text /SECTION:.text,EWR /IGNORE:4078")
#endif
Yandex
Объявления
23.12.2013, 03:42     Компиляция Sqlite3.dll в Visual C++ 6. Нужны умные головы профессионалов
Ответ Создать тему
Опции темы

Текущее время: 14:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru