Debian gcc нежелательное поведение

Я создаю разделяемую библиотеку gcc со статической зависимостью библиотеки.

Я компилирую части для статической библиотеки следующим образом:

gcc -c -m64 -O2 -fPIC -std=c99 -Wall  ms*.c //there are 10 C files, no warnings

Затем я создаю статическую библиотеку с:

ar rc static_lib.a ms*.o

Затем я собираю части для моей программы следующим образом:

g++ -c -m64 -O2 -fPIC -std=c++14 -Wall  ab*.cpp //there are 5 C++ files, just -Wunused-variable warnings

Затем я создаю общую библиотеку следующим образом:

g++ -shared -g -Wall ab*.o static_lib.a -o shared_lib.so

в обычном случае этот shared_lib.so будет вызываться программой Ruby с использованием интерфейса сторонней функции. Нет проблем, если я сделаю это на Ubuntu или Mac (.dylib), но если я попробую это на Debian Stretch, я получу ошибку связанные со статической библиотекой как будто конфигурации не установлены должным образом. Если я запускаю приложение без стороннего интерфейса функций, такого как создание тестера и запуск с основной функцией файла cpp, как показано ниже:

> g++ -o library_test ab*.o static_lib.a
> ./library_test

Нет проблем!

У меня вопрос, какая конфигурация для создания разделяемой библиотеки может отсутствовать здесь, чтобы не получить такого нежелательного поведения. Особенно на Debian Stretch 9,5!
Или есть способ, который я могу понять, если есть проблема в общей библиотеке.

0

Решение

Из комментариев вы указываете, что проблема с #define, Те препроцессор директивы. Библиотеки для линкер.

Вы можете быть смущены, потому что g++ включает в себя фазу препроцессора и может вызывать компоновщик в зависимости от запрошенного вывода. Еще, g++ следует правилам языка C ++.

0

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

Других решений пока нет …

По вопросам рекламы [email protected]