From: Gillula, J. <Jer...@di...> - 2006-08-01 21:47:32
|
Hi everybody, I've discovered yet another interesting problem (I seem to be encountering these weekly)...this one has to do with the "-static" flag for arm-linux-g++, and how not using it prevents file IO using fstream from operating correctly. The short version: * If I try to use the fstream library to read from a file, and don't compile with -static, the file IO doesn't work correctly on the gumstix (and in more complicated programs, causes segfaults) * If I do use the -static option, everything works fine The long version: I have a sample program that's really simple, called file_printer.cc -- all it's supposed to do is read from a file called test.txt, and print its contents to the screen: #include <iostream> #include <fstream> #include <sstream> using namespace std; int main(int argc, char *argv[]) { fstream testFile("test.txt"); string line; cout << "Opening file..." << endl; if(testFile.is_open()) { cout << "File opened succesfully!" << endl; while(testFile.good()) { =09 getline(testFile,line); =20 cout << "Got line: " << line.c_str() << endl; } } testFile.close(); cout << "File closed" << endl; return 0; } When I compile it using the -static flag, as below... $host_pc> arm-linux-g++ file_printer.cc -o file_printer -static The output when I run it on the gumstix is as follows: $gumstix> ./file_printer Opening file... File opened successfully! Got line: this is line 1 Got line: this is line 2 Got line:=20 File closed $gumstix> However, when I compile it without the -static flag, as below... $host_pc> arm-linux-g++ file_printer.cc -o file_printer The output when I run it on the gumstix is: $gumstix> ./file_printer Opening file... File opened successfully! File closed $gumstix> So clearly, without -static, it is not reading from the file properly...Does anybody know why I need the -static flag? It would be nice to be able to compile without it, since it makes my executables roughly an order of magnitude larger than they are without it, and I have limited space on the gumstix... Plus, I'm just sort of curious why it doesn't work without "-static" -- shouldn't arm-linux-g++ use the right standard libraries when it does the compiling and linking? Thanks in advance! - Jeremy |
From: <mul...@ka...> - 2006-08-02 15:45:09
|
Hello, do you compile your program for the version of libstdcpp that is on your gumstix ? I use everyday [io]fstream, I compile without -static, and it works well. On 8/1/06, Gillula, Jeremy <Jer...@di...> wrote: > > Hi everybody, > > I've discovered yet another interesting problem (I seem to be encounterin= g > these weekly)=85this one has to do with the "-static" flag for arm-linux-= g++, > and how not using it prevents file IO using fstream from operating > correctly. The short version: > > * If I try to use the fstream library to read from a file, and don't > compile with -static, the file IO doesn't work correctly on the gumstix (= and > in more complicated programs, causes segfaults) > > * If I do use the -static option, everything works fine > > The long version: > I have a sample program that's really simple, called file_printer.cc -- > all it's supposed to do is read from a file called test.txt, and print it= s > contents to the screen: > > #include <iostream> > #include <fstream> > #include <sstream> > using namespace std; > > int main(int argc, char *argv[]) { > fstream testFile("test.txt"); > string line; > > cout << "Opening file..." << endl; > if(testFile.is_open()) { > cout << "File opened succesfully!" << endl; > while(testFile.good()) { > getline(testFile,line); > cout << "Got line: " << line.c_str() << endl; > } > } > testFile.close(); > cout << "File closed" << endl; > return 0; > } > > When I compile it using the -static flag, as below=85 > $host_pc> arm-linux-g++ file_printer.cc -o file_printer -static > > The output when I run it on the gumstix is as follows: > $gumstix> ./file_printer > Opening file=85 > File opened successfully! > Got line: this is line 1 > Got line: this is line 2 > Got line: > File closed > $gumstix> > > However, when I compile it without the -static flag, as below=85 > $host_pc> arm-linux-g++ file_printer.cc -o file_printer > > The output when I run it on the gumstix is: > $gumstix> ./file_printer > Opening file=85 > File opened successfully! > File closed > $gumstix> > > So clearly, without -static, it is not reading from the file > properly...Does anybody know why I need the -static flag? It would be ni= ce > to be able to compile without it, since it makes my executables roughly a= n > order of magnitude larger than they are without it, and I have limited sp= ace > on the gumstix=85 Plus, I'm just sort of curious why it doesn't work wit= hout > "-static" -- shouldn't arm-linux-g++ use the right standard libraries whe= n > it does the compiling and linking? > > Thanks in advance! > > - Jeremy > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV > > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > > > --=20 J=E9r=F4me Multrier TinyCoach, un projet KaliBee |
From: Craig H. <cr...@gu...> - 2006-08-02 16:18:58
|
Can you build strace, and run it on the program, and see what it's =20 doing? C On Aug 1, 2006, at 2:45 PM, Gillula, Jeremy wrote: > Hi everybody, > > I've discovered yet another interesting problem (I seem to be =20 > encountering these weekly)=85this one has to do with the "-static" =20 > flag for arm-linux-g++, and how not using it prevents file IO using =20= > fstream from operating correctly. The short version: > > * If I try to use the fstream library to read from a file, and =20 > don't compile with -static, the file IO doesn't work correctly on =20 > the gumstix (and in more complicated programs, causes segfaults) > > * If I do use the -static option, everything works fine > > The long version: > I have a sample program that's really simple, called =20 > file_printer.cc -- all it's supposed to do is read from a file =20 > called test.txt, and print its contents to the screen: > > #include <iostream> > #include <fstream> > #include <sstream> > using namespace std; > > int main(int argc, char *argv[]) { > fstream testFile("test.txt"); > string line; > > cout << "Opening file..." << endl; > if(testFile.is_open()) { > cout << "File opened succesfully!" << endl; > while(testFile.good()) { > getline(testFile,line); > cout << "Got line: " << line.c_str() << endl; > } > } > testFile.close(); > cout << "File closed" << endl; > return 0; > } > > When I compile it using the -static flag, as below=85 > $host_pc> arm-linux-g++ file_printer.cc -o file_printer -static > > The output when I run it on the gumstix is as follows: > $gumstix> ./file_printer > Opening file=85 > File opened successfully! > Got line: this is line 1 > Got line: this is line 2 > Got line: > File closed > $gumstix> > > However, when I compile it without the -static flag, as below=85 > $host_pc> arm-linux-g++ file_printer.cc -o file_printer > > The output when I run it on the gumstix is: > $gumstix> ./file_printer > Opening file=85 > File opened successfully! > File closed > $gumstix> > > So clearly, without -static, it is not reading from the file =20 > properly...Does anybody know why I need the -static flag? It would =20= > be nice to be able to compile without it, since it makes my =20 > executables roughly an order of magnitude larger than they are =20 > without it, and I have limited space on the gumstix=85 Plus, I'm =20 > just sort of curious why it doesn't work without "-static" -- =20 > shouldn't arm-linux-g++ use the right standard libraries when it =20 > does the compiling and linking? > > Thanks in advance! > > - Jeremy > > ----------------------------------------------------------------------=20= > --- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to =20 > share your > opinions on IT & business topics through brief surveys -- and earn =20 > cash > http://www.techsay.com/default.php?=20 > page=3Djoin.php&p=3Dsourceforge&CID=3DDEVDEV____________________________= ____=20 > _______________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users |