Каковы передовые методы работы с разделяемыми библиотеками в Linux?

Недавно я много читал о разделяемых библиотеках в Linux, и вот что я узнал:

  • Общая библиотека должна включать soname , включая его основной номер версии. Что-то вроде: libfoo.so.1
  • Его настоящее имя файла также должно включать дополнительный номер версии. Что-то вроде: libfoo.so.1.0
  • Когда файл библиотеки копируется, скажем, в / usr / local / lib , если ldconfig запущен, он будет читать soname и создайте символическую ссылку с именем libfoo.so.1 , указывающую на libfoo.so.1.0 .
  • Если кто-то хочет использовать эту библиотеку для своего При разработке необходимо сначала создать символическую ссылку без номера версии на реальный файл, скажем libfoo.so , указывающую на libfoo.so.1.0 . {вернуть x + y; } main.cpp: #include int add (int x, int ...

    По адресу: http://www.learncpp.com/cpp-tutorial/19-header-files/

    Упоминается следующее:

    add.cpp:

    int add(int x, int y)
    {
        return x + y;
    }
    

    main.cpp:

    #include 
    
    int add(int x, int y); // forward declaration using function prototype
    
    int main()
    {
        using namespace std;
        cout << "The sum of 3 and 4 is " << add(3, 4) << endl;
        return 0;
    }
    

    Мы использовали предварительное объявление, чтобы компилятор знал, что было « add » при компиляции main.cpp . Как упоминалось ранее, написание опережающих объявлений для каждой функции, которую вы хотите использовать, которая находится в другом файле, может быстро утомить.

    Не могли бы вы объяснить « опережающее объявление » дальше? проблема, если мы используем его в функции main () ?

202
задан Robi 21 February 2017 в 06:49
поделиться