GCC question

William A. Mahaffey III wam at hiwaay.net
Sat Sep 5 14:16:05 UTC 2015

On 09/05/15 08:33, William A. Mahaffey III wrote:
> I have some code which was originally SGI native, then moved to Linux 
> (FC14 x86_64 & CentOS 5). I am now interested in getting it going 
> under FreeBSD 9.3R. Due to differences in system header file includes, 
> I need to tweek some of my app-specific header files. I have poked 
> around the (*COPIOUS* !!!!) GCC man page & I couldn't find (or missed) 
> either how to get it to regurgitate its default compiler-defines or a 
> tabulation of those defines, so I can use them to conditionally 
> include system headers in my own header files. Where is this info :-) 
> ? TIA & have a nice (long) weekend.

To provide a bit of context:

[wam at kabini1, TEST, 9:11:44am] 522 % wc -l ../include/stdc.h
      724 ../include/stdc.h
[wam at kabini1, TEST, 9:11:48am] 523 % head -24 ../include/stdc.h

#ifndef _STD_C_H_
#define _STD_C_H_

#ifdef __cplusplus      // some useful I/O coding for C++ ....

using namespace std;    // this is necessary to avoid "error: 'ostream' 
does not name a type" error :-/ ....
#include <iostream>

#endif                  // __cplusplus

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#ifdef  __linux__
#include <malloc.h>
#include <unistd.h>     // typedef uint :-) ....
#include <math.h>
#include <limits.h>
#include "Epsilon.h"    // defines *ALL* epsilons (EPS, EPS2, etc.) used 
by CAD ....
#include "bits.h"

[wam at kabini1, TEST, 9:11:50am] 524 % wc -l fpbl.c
      320 fpbl.c
[wam at kabini1, TEST, 9:11:53am] 525 % head -10 fpbl.c

#include "stdc.h"
#include "Precis.h"

#undef  SIZE
#define SIZE    50

[wam at kabini1, TEST, 9:11:55am] 526 % gcc -o fpbl -I ../include/ fpbl.c
/tmp//ccgFw6d7.o: In function `setupGrid':
fpbl.c:(.text+0x21b): undefined reference to `pow'
/tmp//ccgFw6d7.o: In function `initS':
fpbl.c:(.text+0x32f): undefined reference to `log'
/tmp//ccgFw6d7.o: In function `initUtau':
fpbl.c:(.text+0x4e4): undefined reference to `log'
/tmp//ccgFw6d7.o: In function `setupUz':
fpbl.c:(.text+0x833): undefined reference to `log'
/tmp//ccgFw6d7.o: In function `setupEP1':
fpbl.c:(.text+0x95f): undefined reference to `pow'
/tmp//ccgFw6d7.o: In function `main':
fpbl.c:(.text+0xf8c): undefined reference to `log'
fpbl.c:(.text+0xfee): undefined reference to `log'
[wam at kabini1, TEST, 9:11:59am] 527 %

i.e. my little test program includes 1 of my specific header files, 
which in turn includes <math.h>, which defines pow, log, etc. Since gcc 
apparently only reports some random text location, I am having trouble 
figuring out WTF is going on here. I normnally compile this code on a 
CentOS 5 VM on another box using the Intel compiler suite, version:

Intel(R) C Intel(R) 64 Compiler XE for applications running on Intel(R) 
64, Version Build 20110309
Copyright (C) 1985-2011 Intel Corporation.  All rights reserved.

I haven't used GCC in years. I determined (some years back) that the 
Intel compiler produces noticably better code (executes 25 - 50% faster 
than GCC-compiled code, gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)) & 
is otherwise interoperable w/ GCC, so I have been using it ever since.


[wam at kabini1, TEST, 9:15:45am] 527 % uname -a
FreeBSD kabini1.local 9.3-RELEASE-p24 FreeBSD 9.3-RELEASE-p24 #0: Sat 
Aug 22 01:54:44 UTC 2015 
root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
[wam at kabini1, TEST, 9:17:36am] 528 % grep -i gcc /etc/LIST.installed.txt
gcc-4.8.5                      GNU Compiler Collection 4.8
gcc-ecj-4.5                    Eclipse Java Compiler used to build GCC Java
[wam at kabini1, TEST, 9:17:43am] 529 %

Any clues appreciated :-). TIA & Have a nice weekend.


	William A. Mahaffey III


	"The M1 Garand is without doubt the finest implement of war
	 ever devised by man."
                            -- Gen. George S. Patton Jr.

More information about the freebsd-questions mailing list