неопределенная ссылка на `std :: istream :: seekg (long, std :: _ Ios_Seekdir) ' - PullRequest
0 голосов
/ 25 июня 2019

У меня проблемы со сборкой 32-битных приложений в моем выпуске Linux Debian (Buster, версия 10).В частности, кажется, что есть проблема, связанная с std :: istream :: seekg (long, std :: _ Ios_Seekdir). Она прекрасно работает в моей системе Ubuntu (19.04), поэтому похоже, что она связана с Debian, компиляторами и библиотеками.настроить в этой машине.

Я исчерпал все свои альтернативы:

Установлен мультибиблиотечный пакет для gcc и g ++, версии 7 и 8:

apt-get install gcc-multilib

apt-get install g++-multilib

apt-get install gcc-7-multilib

apt-get install g++-7-multilib

У меня установлены обе версии gcc 7 и 8 (из-за того, что некоторые части проекта используют версию 7 gcc).

Явно задайте для LD_LIBRARY_PATH значение / usr / lib32, / usr / lib / gcc / x86_64-linux-gnu // 32 и т. Д.

Ниже приведены библиотеки, которые я могу найти в / usr /:

. / Libx32 / libstdc ++. So.6.0.25

. / Libx32 / libstdc ++. So.6

. / Lib / gcc / x86_64-linux-gnu /7 / x32 / libstdc ++. So

. / Lib / gcc / x86_64-linux-gnu / 7/32 / libstdc ++. So

. / Lib / gcc / x86_64-linux-gnu /7 / libstdc ++. So

. / Lib / gcc / x86_64-linux-gnu / 8 / x32 / libstdc ++. So

. / Lib / gcc / x86_64-linux-gnu / 8 /32 / libstdc ++. So

. / Lib / gcc / x86_64-linux-gnu / 8 / libstdc ++. So ./lib/x86_64-linux-gnu/libstdc++.so.6.0.25

. / lib / x86_64-linux-gnu / libstdc ++. so.6

. / lib32 / libstdc ++. so.6.0.25

. / lib32 / libstdc ++. so.6

. / Lib32 / libstdc ++. So

Я разбил проблему на очень простую программу:

#include <fstream>
int main()
{
std::ifstream is ("file.txt", std::ifstream::binary);
is.seekg(0, is.end);
}

, и она прекрасно компилируется на целевой архитектуре (64-битная)), но при использовании 32-битного режима компиляции он не работает:

gcc -m32 test32.cpp -lstdc ++

/usr/bin/ld: /tmp/cc0kHsOJ.o: in function main:
test32.cpp:(.text+0x50): undefined reference to  std::istream::seekg(long, std::_Ios_Seekdir)
collect2: error: ld returned 1 exit status

Пожалуйста, помогите и объясните мне, как устранить эту проблему.

...