Я новичок в C ++, хотя недавно я работал с Objective C, поэтому некоторые из них выглядят смутно знакомыми.
Я нахожусь в процессе написания нескольких тестовых программ, чтобы оценить, будет ли что-то возможно или нет. В моей (очень простой программе «Hello World») я вывожу некоторый текст, используя cout, который отлично работает, однако, когда я изменяю LD_LIBRARY_PATH
, чтобы указать на некоторые библиотеки, требуемые сторонним приложением, с которым я буду общаться, я не получаю вывод, но нет ошибок компилятора от g++.
Я пробовал включать стандартные пути, например. /usr/local/lib:/usr/lib:/lib
, но когда я включаю это в путь, я все равно не получаю вывода.
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World";
return 0;
}
Как видите, на данный момент это довольно простая программа, которая работает, как и ожидалось, до того, как я установил LD_LIBRARY_PATH
.
Я вообще не получаю никаких ошибок на любом этапе, поэтому я не могу узнать, работает ли он. Есть ли что-нибудь, что я могу проверить или как-то проверить, работает ли программа?
P.S. Я также пытался записать вывод в файл, который работает, прежде чем устанавливать путь.
Большое спасибо
ОБНОВИТЬ
Спасибо за ответы (результаты см. в комментариях ниже)
Основываясь на том, что @Nemo сказал о стороннем приложении, имеющем собственную версию libstdc++.so, что было правильно, я заменил их версию этой библиотеки на стандартную установочную версию. Хотя теперь я получаю вывод «Hello World», я все еще получаю множество ошибок No such file or directory
при выполнении программы, поэтому я предполагаю, что проблема решена лишь частично. Я не уверен, что то, что я сделал, «разрешено» или как действовать дальше.
endl;
в конец строки, чтобы убедиться, что проблема не только в том, чтоcout
не сбрасывает вывод. - person Mats Petersson   schedule 22.07.2013strace -f _binary_
- и проверьте вывод - вы должны увидеть, что происходит из этого - person Iwan Aucamp   schedule 22.07.2013LD_LIBRARY_PATH
требуется для стороннего приложения. По моему опыту, они часто поставляются со своей собственной версиейlibstdc++.so
(среда выполнения C++). Я очень подозреваю, что это источник проблемы. - person Nemo   schedule 22.07.2013/lib:/usr/lib
передLD_LIBRARY_PATH
? Если вы работаете в 64-битной системе, пробовали ли вы вместо этого/lib64:/usr/lib64
? - person Nemo   schedule 22.07.2013ldd yourprogram
с установленным LD_LIBRARY_PATH и без него. Есть ли разница в выходе? - person n. 1.8e9-where's-my-share m.   schedule 22.07.2013endl
дает те же результаты. Я пытался добавить/lib:/usr/lib
в начало пути, но это не внесло изменений. не получить ни одного из этих ldd'ing не дает мне вывода с установленным путем, но без такого, какlibm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6d26000)
Я предполагаю, что «Нет такого файла или каталога» указывает на проблему - person olliefinn   schedule 23.07.2013