Как я могу использовать более низкую версию скомпилированного GCC. Так в более высокой версии программы GCC? - PullRequest
0 голосов
/ 28 марта 2019

Я делаю .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?

...