Як встановити дві версії libftd2xx

Як вже писалося, 64-бітні бібліотеки libftd2xx.so версії 1.0.0 та новіші не сумісні по розміру змінних зі старішими бібліотеками, останньою з яких була версія 0.4.16. З 32-бітними бібліотеками такої проблеми нема.
Для роботи 64-бітної версії avreal/Linux необхідно встановити стару версію libftd2xx, яку можна взяти на сторінці download.
Може виникнути необхідність на одному комп’ютері встановити обидві версії бібліотеки. Для цього avreal, починаючи з версії 1.28r6, завантажує бібліотеку по імені libftd2xx.so.0, а не libftd2xx.so.
Розглянемо рекомендований процес встановлення бібліотеки.

Installation:
1. unzip and untar the file given to a suitable directory
tar -xzvf libftd2xx0.4.16.tar.gz

2. As root user copy the following files to /usr/local/lib
cp libftd2xx.so.0.4.16 /usr/local/lib

3. Change directory to /usr/local/lib
cd /usr/local/lib

4. make symbolic links to these files using the following commands:
ln -s libftd2xx.so.0.4.16 libftd2xx.so
ln -s libftd2xx.so.0.4.16 libftd2xx.so.0

5. Change directory to /usr/lib
cd /usr/lib

6. make symbolic links to these files using the following commands:
ln -s /usr/local/lib/libftd2xx.so.0.4.16 libftd2xx.so

Сам двійковий файл бібліотеки має повну назву, яка включає в себе номер версії: libftd2xx.so.0.4.16. В пунктах 4 та 6 створюються символічні посилання з коротким іменем, по якому зазвичай бібліотека підключається програмами. В даному випадку це ім’я libftd2xx.so. Міняючи ці посилання, можна оперативно перемикати всі програми з однієї версії бібліотеки на іншу.
Можна створити додаткове посилання з іменем, яке включає в себе головний (major) номер версії: libftd2xx.so.0. Тоді програма, яка «знає», що їй потрібні бібліотеки «нульової» серії, може використовувати саме це ім’я для завантаження бібліотеки версії 0.4.16 або 0.4.12. Коротке ім’я libftd2xx.so може вказувати на будь-яку новішу версію і всі інші програми завантажуватимуть саме її.
Отже, вище наведено процес інсталяції біблотеки версії 0.4.16, нижче — 1.0.4. Зеленим кольором виділено операції, які необхідно додати до обох процесів інсталяції. Червоним — ті, які необхідно зробити лише для якоїсь однієї бібліотеки, наприклад, для свіжої 1.0.4. Ця бібліотека буде «основною», призначеною для використання всіма програмами.

Installation:
1. unzip and untar the file given to a suitable directory
tar -xzvf libftd2xx1.0.4.tar.gz

2. Change directory to the required architecture subdirectory, build/i386 for 32-bit or build/x86_64 for 64-bit.

3. As root user copy the following files to /usr/local/lib
cp libftd2xx.so.1.0.4 /usr/local/lib

3. Change directory to /usr/local/lib
cd /usr/local/lib

4. make symbolic links to these files using the following commands:
ln -s libftd2xx.so.1.0.4 libftd2xx.so
ln -s libftd2xx.so.1.0.4 libftd2xx.so.1

5. Change directory to /usr/lib
cd /usr/lib

6. make symbolic links to these files using the following commands:
ln -s /usr/local/lib/libftd2xx.so.1.0.4 libftd2xx.so

Враховуючи те, що версію 1.0.0 я не видаляв, перелік файлів бібліотек libftd2xx на моєму комп’ютері виглядає так:

real@real:/usr/local/lib$ ls -l libftd2*
lrwxrwxrwx 1 root root     18 2011-03-22 20:04 libftd2xx.so -> libftd2xx.so.1.0.4
lrwxrwxrwx 1 root root     19 2010-03-21 09:03 libftd2xx.so.0 -> libftd2xx.so.0.4.16
-rwxr-xr-x 1 root root 339873 2010-03-14 18:31 libftd2xx.so.0.4.16
lrwxrwxrwx 1 root root     18 2010-12-27 22:19 libftd2xx.so.1 -> libftd2xx.so.1.0.4
-rwxr-xr-x 1 root root 429158 2010-12-27 21:52 libftd2xx.so.1.0.0
-rwxr-xr-x 1 root root 449896 2011-03-22 20:04 libftd2xx.so.1.0.4
real@real:/usr/local/lib$ cd /usr/lib
real@real:/usr/lib$ ls -l libftd2*
lrwxrwxrwx 1 root root 33 2011-03-22 20:09 libftd2xx.so -> /usr/local/lib/libftd2xx.so.1.0.4
real@real:/usr/lib$

При цьому avreal64-1.28r6 і свіжіші використовують бібліотеку libftd2xx.so.0.4.16 по імені libftd2xx.so.0. Всі інші програми, скажімо, приклади від FTDI, які йдуть в комплекті, використовуватимуть бібліотеку libftd2xx.so.1.0.4 по імені libftd2xx.so.
Ім’я libftd2xx.so.1 заведено для експериментів, до яких ніяк не дійдуть руки 🙂

Leave a Reply

[flagcounter image]