-
gcc #include file path OK for C, doesn't work for C++
Hi!
Using KNOPPIX 5.0.1CD, the gcc compiler for C has no trouble finding stdio.h. The C++ compiler cannot find iostream.
1. Do you have any suggestions for a work-around?
2. I'm going to be remastering this version of KNOPPIX to have some tools that aren't in the standard version, so I could change path variables, etc. What needs to be changed?
Thanks,
Fred
-
C++ compiler
Have you tried GCC? i.e.
g++ nameofprogram.cp -o anyname
-
GCC with C++ problem
Thanks, WaKa!
What I did was the simple "hello, world!" program in C and C++, using exactly the format you suggested.
For C, it worked absolutely as expected, so I was surprised when it couldn't find iostream for the C++ version of the program (using cout << "Hello, world!" << endl; ), and I got the error message that ostream was not defined in this function! I gave it this:
#include <iostream>
for C++, just like I gave it:
#include <stdio.h>
for the C case. I tried the alias for gcc (g++), as well. If I specifically gave the absolute path to iostream it worked.
Since this is a Live CD, however, I'd have to re-master to add a PATH or an alias.
So suggestions are still welcome!
--Fred
-
C++
use this:
#include <iostream>
int main()
{
std::cout << "Hello, world!" << std::endl;
return 0;
}
-
GCC and C++
Thanks for your reply, WaKa.
The problem is that gcc can't find the #include file iostream, not that it's using the wrong namespace.
Whe I use the -v (verbose) output, it tells met that it is, in fact, looking in a non-existent directory. - many directories deeper than the real one.
Does the program you gave actually work on your copy of KNOPPIX 5.0.1CD? If so, then I'll have to try another download.
Thanks,
Fred
-
C++ path issue
FYI, here's the response to the gcc invocation:
knoppix@1[~]$ gcc -v test.cpp -o test
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk-default --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --with-tune=i686 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.4 20060507 (prerelease) (Debian 4.0.3-3)
/UNIONFS/usr/bin/../lib/gcc/i486-linux-gnu/4.0.4/cc1plus -quiet -v -iprefix /UNIONFS/usr/bin/../lib/gcc/i486-linux-gnu/4.0.4/ -D_GNU_SOURCE test.cpp -quiet -dumpbase test.cpp -mtune=i686 -auxbase test -version -o /tmp/cclr3aiv.s
ignoring duplicate directory "/usr/lib/gcc/i486-linux-gnu/4.0.4/../../../../include/c++/4.0.4"
ignoring duplicate directory "/usr/lib/gcc/i486-linux-gnu/4.0.4/../../../../include/c++/4.0.4/i486-linux-gnu"
ignoring duplicate directory "/usr/lib/gcc/i486-linux-gnu/4.0.4/../../../../include/c++/4.0.4/backward"
ignoring nonexistent directory "/usr/local/include/i486-linux-gnu"
ignoring duplicate directory "/usr/lib/gcc/i486-linux-gnu/4.0.4/include"
ignoring nonexistent directory "/usr/include/i486-linux-gnu"
#include "..." search starts here:
#include <...> search starts here:
/UNIONFS/usr/bin/../lib/gcc/i486-linux-gnu/4.0.4/../../../../include/c++/4.0.4
/UNIONFS/usr/bin/../lib/gcc/i486-linux-gnu/4.0.4/../../../../include/c++/4.0.4/i486-linux-gnu
/UNIONFS/usr/bin/../lib/gcc/i486-linux-gnu/4.0.4/../../../../include/c++/4.0.4/backward
/UNIONFS/usr/bin/../lib/gcc/i486-linux-gnu/4.0.4/include
/usr/local/include
/usr/include
End of search list.
GNU C++ version 4.0.4 20060507 (prerelease) (Debian 4.0.3-3) (i486-linux-gnu)
compiled by GNU C version 4.0.4 20060507 (prerelease) (Debian 4.0.3-3).
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129331
test.cpp: In function 'int main()':
test.cpp:8: error: 'cout' was not declared in this scope
test.cpp:8: error: 'endl' was not declared in this scope
As I read this, gcc is looking in a bunch of wrong directories for the C++ include files.
--Fred
-
Junior Member
registered user
Post your source code. I think it is that you are not using the STD namespace.
You should do this in your file:
#include <iostream>
using namespace std;
int main (void)
{
cout << "Hello World!" << endl;
return 0;
}
See if that works. If that doesn't work, post your source.
-
Code:
knoppix@1[~]$ gcc -v test.cpp -o test
gcc is the compiler for C
g++ is the compiler for C++
test(name of program) is not a unique name because it conflicts with bash.
use this
g++ -v test.cpp -o test_1 (or what ever you like)
Similar Threads
-
By Keithj in forum Hdd Install / Debian / Apt
Replies: 10
Last Post: 09-10-2005, 05:55 AM
-
By sfackler in forum General Support
Replies: 0
Last Post: 08-31-2005, 03:32 AM
-
By tilleyrw in forum General Support
Replies: 1
Last Post: 04-29-2005, 04:18 AM
-
By c0ns7ruc7 in forum Hardware & Booting
Replies: 2
Last Post: 11-10-2004, 10:35 PM
-
Replies: 5
Last Post: 04-25-2003, 05:25 PM
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
1U Supermicro Server 10 Bay 2x Intel Xeon 3.3Ghz 8C 128GB RAM 480GB SSD 2x 10GBE
$297.00
HP ProLiant Xeon E3-1220L V2 MicroServer Gen8 2.30 GHz 16 GB RAM NO DRIVES
$199.99
HPE ProLiant MicroServer Gen10 Plus v2 Ultra Micro Tower Server - 1 x Intel Xeon
$846.19
HPE ProLiant MicroServer Gen8 Intel Xeon E3-1265L 16GB ECC PCIe x16 4x1TB HDD
$249.99
SuperMicro Server 505-2 Intel Atom 2.4GHz 8GB RAM SYS-5018A-FTN4 1U Rackmount
$202.49
HP ProLiant HSTNS-5151 Micro Server 8GB RAM No Drives/Key/Caddies *READ*
$94.99
Supermicro 5018A-FTN4 Rack Server - Black
$125.00
SUPERMICRO CSE-512 AMD Opteron Processor 6128, 32GB DDR3 RAM NO HDD
$90.00
1U 20" Short Depth Server Firewall PFSense X11SSH-F Xeon 3.5Ghz 32GB RAM NVME
$247.00
1U Supermicro Server X10DRU-i+ 2x Xeon E5-2690 V4 28 Cores 64GB 4x 10GBE-T 2PS
$324.00