Бинарь не видит конца файла.
splinter
Пункты: 1549
Регистрация: 16.12.2011
Пол: Мужчина
Здравствуйте. На собранной билдрутом системе пытаюсь собрать билдрутовским компилятором gcc-4.6.2 для ARM простой код, в результате на стандартный вывод должно выйти содержимое файла tableID.csv (пробовал и другие файлы ситуация такая же) но почему то пройдя до конца файла программа не останавливается а продолжает сыпать какую то чушь:
Код 4889,ENTERMTZ5.setVal,BOOLEAN,E,SG,,,false,38144,4
4890,CONTROLRPV,SPG,S,,,SHM,,38148,4
4891,CONTROLRPV.setVal,BOOLEAN,E,SG,,,false,38148,4
4892,SOUNDDELAY,ING,S,,,SHM,,38152,16
4893,SOUNDDELAY.setVal,INT32,,SG,,,60000,38152,4
4894,SOUNDDELAY.minVal,INT32,,RCF,,,5000,38156,4
4895,SOUNDDELAY.maxVal,INT32,,RCF,,,60000,38160,4
4896,SOUNDDELAY.stepSize,INT32U,E,RCF,,,1000,38164,4
4897,PRISNDVALUE,SPG,S,,,SHM,,38168,4
4898,PRISNDVALUE.setVal,BOOLEAN,E,SG,,,false,38168,44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444.... и так пока не прервешь процесс ^C
Вот код, он работает нормально работает на x86:
Код #include <fstream>
#include <iostream>
#include <ostream>
using namespace std;
int main()
{
char ch;
ifstream infile("tableID.csv");
while (infile.good())
{
infile.get(ch);
cout<<ch;
}
cout << endl;
return 0;
}
Вот еще вариант, результат тот же:
Код
#include <iostream>
#include <fstream>
using namespace std;
int main (int argc, char *argv[])
{
char ch;
ifstream fin("tableID.csv") ;
if(!fin) {
cout << "Can not open file\n" ;
return 1;
}
while (!fin.eof())
{
fin>>ch;
cout<<ch;
}
return 0;
}
Дело не в tableID.csv, так как вместо него пытался подсовывать и другие и /etc/passwd. Buildroot от 2012.02, Released February 29th. Флаги g++:
Код
bash-4.1$ /mnt/filestore/buildroot-2012.02/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-g++ -v
Используются внутренние спецификации.
Целевая архитектура: arm-unknown-linux-uclibcgnueabi
Параметры конфигурации: /mnt/filestore/buildroot-2012.02/output/toolchain/gcc-4.3.6/configure --prefix=/mnt/filestore/buildroot-2012.02/output/host/usr --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-unknown-linux-uclibcgnueabi --enable-languages=c,c++ --with-sysroot=/mnt/filestore/buildroot-2012.02/output/host/usr/arm-unknown-linux-uclibcgnueabi/sysroot --with-build-time-tools=/mnt/filestore/buildroot-2012.02/output/host/usr/arm-unknown-linux-uclibcgnueabi/bin --disable-__cxa_atexit --enable-target-optspace --disable-libgomp --with-gnu-ld --disable-libssp --disable-multilib --enable-tls --enable-shared --with-gmp=/mnt/filestore/buildroot-2012.02/output/host/usr --with-mpfr=/mnt/filestore/buildroot-2012.02/output/host/usr --enable-threads --disable-decimal-float --with-float=soft --with-abi=aapcs-linux --with-arch=armv5te --with-tune=arm926ej-s --with-pkgversion='Buildroot 2012.02' --with-bugurl=http://bugs.buildroot.net/
Модель многопоточности: posix
gcc версия 4.3.6 (Buildroot 2012.02)
Версии gcc пробовал разные, в том числе 4.6.1, 4.5 результат тот же. ДОбавление пустой строки в конец текстового файла не помогает, он продолжает бежать по пустой строке.
splinter
Пункты: 1549
Регистрация: 16.12.2011
Пол: Мужчина
В общем такое ощущение что он не знает EOF, не реагирует ни на while (!fin.eof()) ни на while (infile.good()) ни на while (infile.eof()) ни while (infile)
sasamy
Пункты: 83542
Регистрация: 14.08.2009
Цитата
--target=arm-unknown-linux-uclibcgnueabi
Есть острая необходимость в uclibc ? я бы не стал с ней связываться - лучше eglibc
Цитата
# uname -a
Linux buildroot 3.2.18-rt29 #1 PREEMPT Mon Jun 11 05:05:47 MSK 2012 armv5tejl GNU/Linux
# ./tst.bin
root:x:0:0:root:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:100:sync:/bin:/bin/sync
mail:x:8:8:mail:/var/spool/mail:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
operator:x:37:37:Operator:/var:/bin/sh
haldaemon:x:68:68:hald:/:/bin/sh
dbus:x:81:81:dbus:/var/run/dbus:/bin/sh
ftp:x:83:83:ftp:/home/ftp:/bin/sh
nobody:x:99:99:nobody:/home:/bin/sh
sshd:x:103:99:Operator:/var:/bin/sh
default:x:1000:1000:Default non-root user:/home/default:/bin/sh
sasa@sasa-laptop:~/ctng-atmel/bin$ arm-atmel-linux-gnueabi-g++ -v
Using built-in specs.
COLLECT_GCC=arm-atmel-linux-gnueabi-g++
COLLECT_LTO_WRAPPER=/home/sasa/ctng-atmel/libexec/gcc/arm-atmel-linux-gnueabi/4.6.4/lto-wrapper
Target: arm-atmel-linux-gnueabi
Configured with: /home/sasa/work/ctng-build/.build/src/gcc-linaro-4.6-2012.04/configure --build=x86_64-build_unknown-linux-gnu --host=x86_64-build_unknown-linux-gnu --target=arm-atmel-linux-gnueabi --prefix=/home/sasa/ctng-atmel --with-sysroot=/home/sasa/ctng-atmel/arm-atmel-linux-gnueabi/sysroot --enable-languages=c,c++ --with-arch=armv5te --with-tune=arm926ej-s --with-float=soft --with-pkgversion='crosstool-NG 1.15.2' --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --with-gmp=/home/sasa/work/ctng-build/.build/arm-atmel-linux-gnueabi/buildtools --with-mpfr=/home/sasa/work/ctng-build/.build/arm-atmel-linux-gnueabi/buildtools --with-mpc=/home/sasa/work/ctng-build/.build/arm-atmel-linux-gnueabi/buildtools --with-ppl=/home/sasa/work/ctng-build/.build/arm-atmel-linux-gnueabi/buildtools --with-cloog=/home/sasa/work/ctng-build/.build/arm-atmel-linux-gnueabi/buildtools --with-libelf=/home/sasa/work/ctng-build/.build/arm-atmel-linux-gnueabi/buildtools --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm -L/home/sasa/work/ctng-build/.build/arm-atmel-linux-gnueabi/buildtools/lib -lpwl' --enable-threads=posix --enable-target-optspace --disable-nls --disable-multilib --with-local-prefix=/home/sasa/ctng-atmel/arm-atmel-linux-gnueabi/sysroot --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.6.4 20120402 (prerelease) (crosstool-NG 1.15.2)
tst.bin - это тот который "Вот еще вариант, результат тот же:"
splinter
Пункты: 1549
Регистрация: 16.12.2011
Пол: Мужчина
Наверное нет, но хотелось бы все таки знать причину, а есть возможность подружить eglibc с buildroot? я как то про eglibc мало знаю, и не использовал.
sasamy
Пункты: 83542
Регистрация: 14.08.2009
splinter
Пункты: 1549
Регистрация: 16.12.2011
Пол: Мужчина
Извините за оффтоп но при попытке собрать с eglibc не могу забрать с выполнить svn export -r HEAD
svn://svn.eglibc.org/branches/eglibc-2_16/libc eglibc-2_16, не могли бы проверить доступность линка, в инет хожу через проксю, настройки нормальные другие svn-репозитории чекятся нормально.
sasamy
Пункты: 83542
Регистрация: 14.08.2009
Цитата
eglibc-2_16
все же пренебрегли советом :)
Цитата
версия 2.13 - последняя с которой вы не испытаете проблем при сборке расширенного варианта busybox
c 2.16 busybox не собрется
Цитата
не могли бы проверить доступность линка
линк рабочий
splinter
Пункты: 1549
Регистрация: 16.12.2011
Пол: Мужчина
а если ресурсы позволяют использовать glibc, есть ли смысл использовать его вместо eglibc?
sasamy
Пункты: 83542
Регистрация: 14.08.2009
splinter
Пункты: 1549
Регистрация: 16.12.2011
Пол: Мужчина
Code Sourcery как я понимаю только собран с glibc, дело в том что у меня есть прошивка(от предыдущего разработчика) к которой надо собрать программы, эта прошивка использует uclibc, как вариант для следующего устройства я буду использовать eglibc/glibc, но мне все равно понадобится компилятор uclibc-gnueabi для написания программ к предыдущей прошивке.