Shared library linux build

C++ Dynamic Shared Library on Linux

This is a follow-up to Dynamic Shared Library compilation with g++. I’m trying to create a shared class library in C++ on Linux. I’m able to get the library to compile, and I can call some of the (non-class) functions using the tutorials that I found here and here. My problems start when I try to use the classes that are defined in the library. The second tutorial that I linked to shows how to load the symbols for creating objects of the classes defined in the library, but stops short of using those objects to get any work done. Does anyone know of a more complete tutorial for creating shared C++ class libraries that also shows how to use those classes in a separate executable? A very simple tutorial that shows object creation, use (simple getters and setters would be fine), and deletion would be fantastic. A link or a reference to some open source code that illustrates the use of a shared class library would be equally good. Although the answers from codelogic and nimrodm do work, I just wanted to add that I picked up a copy of Beginning Linux Programming since asking this question, and its first chapter has example C code and good explanations for creating and using both static and shared libraries. These examples are available through Google Book Search in an older edition of that book.

I’m not sure I understand what you mean by «using» it, once a pointer to the object is returned, you could use it like you use any other pointer to an object.

Читайте также:  Linux script run on boot

The article I linked to shows how to create a function pointer to an object factory function using dlsym. It doesn’t show the syntax for creating and using objects from the library.

You will need the header file describing the class. Why do you think you have to use «dlsym» instead of just letting the OS find and link the library at load time? Let me know if you need a simple example.

@nimrodm: What’s the alternative to using «dlsym»? I’m (supposed to be) writing 3 C++ programs that will all use the classes defined in the shared library. I also have 1 Perl script that will use it, but that’s a whole other problem for next week.

Источник

Создание общей библиотеки Linux

Библиотека — это коллекция реализаций поведения, написанная на определенном языке и обладающая продуманным интерфейсом, с помощью которого это поведение активируется. К примеру, разработчики, желающие написать высокоуровневую программу, могут вместо повторяющейся реализации системных вызовов использовать для их создания библиотеку. Кроме того, это поведение предоставляется для повторного использования многими независимыми программами ( Wikipedia ).

Зачем

В мире открытого программного обеспечения Linux является, пожалуй, лидирующей системой. Согласно английской Wikipedia , примерно на 80% серверов интернета установлена та или иная форма Linux/Unix. Сегодня поддержка этой ОС закладывается в основу большого числа проектов. Участие в создании или расширение имеющихся опенсорсных продуктов является наиболее эффективным способом быстрой разработки программ.

В этой статье мы рассмотрим основы разработки библиотеки Linux на С++, подготовив вас к переходу в мир открытого ПО.

Как

Для начала потребуется выбрать дистрибутив и либо установить его непосредственно на ПК, либо использовать через виртуальную машину. В этом руководстве я буду использовать Ubuntu Linux 22.04. В качестве редактора кода я выбрал VS Code , который можно найти в приложении Snap Store , предлагающем удобный способ скачивания и установки наиболее популярного ПО. А ведь еще недавно единственным способом установки программ в Ubuntu был ввод команд из терминала.

Читайте также:  Установка deepin arch linux

И хотя установка ПО через терминал несколько медлительна, сам по себе этот инструмент является незаменимым помощником для разработчиков. Использование терминала в сочетании с горячими клавишами позволяет делать все быстрее, не отводя рук от клавиатуры.

Создание проекта в VS Code

Для быстрого запуска терминала нажмите ⊞ Win или ⌘ Cmd на клавиатуре Mac и введите terminal, нажмите Enter. После открытия терминала нужно создать каталог для проекта по следующему пути:

Теперь используем терминал для открытия созданного проекта в VS Code. Здесь можно задействовать сокращенную команду !$, чтобы автоматически подставить часть ~/Desktop/linux-shared-library из команды выше и передать ее в редактор кода. Вот как это делается:

Теперь у вас должно открыться окно VS Code, и можно приступать.

В VS Code имеется встроенный терминал для упрощения доступа. Этот терминал можно автоматически активировать нажатием Ctrl + ~.

Пишем main

Откройте терминал VS Code и создайте файл:

Запишите в него следующий код:

// Реализация функции: int (возвращаемый тип), main (имя // функции), void (тип параметра)
int main(void)
// Используем стандартную библиотеку для вывода в окно терминала.
puts(«Hello Earth!»);

// Выходим с кодом возврата 0, обозначающим успех.
return 0;
>

Это программа, которая будет потреблять библиотеку.

Далее мы скомпилируем и выполним только что написанный код с помощью компилятора gcc , поставляемого вместе с дистрибутивом Ubuntu. Устанавливается он так:

Вышеприведенная команда сгенерирует файл a.out, который при выполнении командой ./a.out в терминале VS Code будет выводить “Hello Earth!”:

Источник

Оцените статью
Adblock
detector