Я делаю .so из GCC версии 5.4.0 ниже код для .so.
#include <iostream>
#ifdef __cplusplus
extern "C"
{
#endif
void print();
#ifdef __cplusplus
}
#endif
using namespace std;
void print()
{
cout<<"Hello"<<endl;
}
g ++ ab.cpp -fPIC -shared -o libab.so
Я пытаюсь использовать libab.so в моей c-программе. Но версия gcc отличается
/ root / test / newgcc / usr / bin / x86_64-vmk-linux-gnu-gcc -v
Цель: x86_64-vmk-linux-gnu
Настраивается с помощью: / build / mts / release / bora-12413527 / cayman_gcc / gcc / src / configure --build = x86_64-linux --host = x86_64-linux --target = x86_64-vmk-linux-gnu --prefix = / usr --with-sysroot = / dev / null --with-build-sysroot = / build / mts / release / bora-12413527 / cayman_gcc / build / release / lin64 / gcc / build / x86_64-vmk-linux-gnu / sysroot --enable-languages = c, c ++ --disable-sjlj-исключения --enable-frame-pointer
Модель потока: posix
gcc версия 6.4.0 (GCC)
#include <stdio.h>
#ifdef __cplusplus
extern "C"
{
#endif
void print();
#ifdef __cplusplus
}
#endif
int main()
{
print();
return 0;
}
Я получил ошибку ниже
/root/test/newgcc/usr/bin/../lib/gcc/x86_64-vmk-linux-gnu/6.4.0/../../../../x86_64-vmk-linux-gnu/bin/ld: warning: libstdc++.so.6, needed by ./libab.so, not found (try using -rpath or -rpath-link)
./libab.so: undefined reference to `std::ios_base::Init::~Init()@GLIBCXX_3.4'
./libab.so: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)@GLIBCXX_3.4'
./libab.so: undefined reference to `std::ios_base::Init::Init()@GLIBCXX_3.4'
./libab.so: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)@GLIBCXX_3.4'
./libab.so: undefined reference to `std::cout@GLIBCXX_3.4'
./libab.so: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))@GLIBCXX_3.4'
collect2: error: ld returned 1 exit status
есть ли способ компилировать код, используя gcc версии 6, и в этом .so был создан в gcc версии 5?