compiling a 64-bit program with g++ for Solaris
Polder, Matthew J
matthew.j.polder@lmco.com
Mon Apr 2 16:44:00 GMT 2007
Hi,
I've used g++ for a couple years now but am now contemplating writing
some 64-bit executables. As a simple test, I wrote the following:
#include <iostream>
int main()
{
int a = 4;
long b = 7;
std::cout<<sizeof(a)<<"\t"<<sizeof(b)<<"\n";
}
I then compiled using g++ 3.4.1 on a Solaris machine:
SunOS sde2 5.7 Generic_106541-42 sun4u sparc SUNW,Ultra-4
I will be using various Solaris machines and OS's.
When I compile using:
g++ test.cpp -o test
I get the expected output of 4 bytes for each variable. When I compile
with:
g++ -m64 test.cpp -o test
and then execute it I get:
ld.so.1: test: fatal: /usr/local/lib/libstdc++.so.6: wrong ELF class:
ELFCLASS32
Killed
I assume this is because the C++ library was built for 32-bit. Is it
easy to rebuild the library for 64-bit and have both versions available
for linking? Are there other compiler/linker options I should be using?
Any FAQs or help would be appreciated.
thanks,
matthew
More information about the Gcc-help
mailing list