undefined reference to `main' in C

Hallo, ich erhalte folgende Fehlermeldung beim kompilieren von c-code mit gcc

/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status

Ich versuche zu importieren, die fftw() Funktion in SystemVerilog. Hier ist mein code

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <math.h>
#include <fftw3.h> 

void fftw(double FFT_in[],int size)
{

    double *IFFT_out;
    int i;

    fftw_complex *middle;

    fftw_plan fft;
    fftw_plan ifft;
    middle = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)*size);
    IFFT_out = (double *) malloc(size*sizeof(double));

    fft = fftw_plan_dft_r2c_1d(size, FFT_in, middle, FFTW_ESTIMATE);  //Setup fftw plan for fft (real 1D data)
    ifft = fftw_plan_dft_c2r_1d(size, middle, IFFT_out, FFTW_ESTIMATE);   //Setup fftw plan for ifft

    fftw_execute(fft);
    fftw_execute(ifft);

    printf("Input:    \tFFT_coefficient[i][0]      \tFFT_coefficient[i][1]   \tRecovered Output:\n");

    for(i=0;i<size;i++)
        printf("%f\t%f\t\t\t%f\t\t\t%f\n",FFT_in[i],middle[i][0],middle[i][1],IFFT_out[i]/size);

    fftw_destroy_plan(fft);
    fftw_destroy_plan(ifft);
    fftw_free(middle);
    free(IFFT_out);

    //return IFFT_out;
}

Hier ist ein system Verilog-code aus, wo ich bin versucht zu rufen fftw

module top;
import "DPI-C" function void fftw(real FFT_in[0:11], int size);
real j [0:11];
integer i,size;
real FFT_in [0:11]; 

initial begin
    size = 12;
    FFT_in[0] = 0.1;
     FFT_in[1] = 0.6;
     FFT_in[2] = 0.1;
     FFT_in[3] = 0.4;
     FFT_in[4] = 0.5;
     FFT_in[5] = 0.0;
     FFT_in[6] = 0.8;
     FFT_in[7] = 0.7;
     FFT_in[8] = 0.8;
     FFT_in[9] = 0.6;
     FFT_in[10] = 0.1;
     FFT_in[11] = 0.0;

    $display("Entering in SystemVerilog Initial Block\n");
    #20
     fftw(FFT_in,size);

    $display("Printing recovered output from system verilog\n"); 
    //for(i=0;i<size;i++)
        //$display("%f\t\n",(j[i])/size);

    $display("Exiting from SystemVerilog Initial Block");
    #5 $finish;

end

endmodule

Hier ist ein irun Befehl zu kompilieren systemverilg und C-Dateien

# Compile the SystemVerilog files
fftw_test.sv 
-access +rwc
# Generate a header file called _sv_export.h
-dpiheader _sv_export.h
# Delay compilation of fftw_test.c until after elaboration
#-cpost fftw_test_DPI.c -end
-I/home/fftw/local/include -L/home/ss69/fftw/local/lib fftw_test_DPI.c -lfftw3 -lm 
# Redirect output of ncsc_run to a log file called ncsc_run.log
-log_ncsc_run ncsc_run.log

beim ausführen dieses Befehls folgende Fehlermeldung:
Gebäude Bibliothek führen.so
ld: /home/fftw/local/lib/libfftw3.ein(mapflags.o): Umzug R_X86_64_32 gegen `.rodata' kann nicht verwendet werden, wenn ein gemeinsames Objekt; recompile with-fPIC
/homefftw/local/lib/libfftw3.a: konnte nicht Lesen symbols: Bad value
collect2: ld zurückgegeben, 1 exit status
Hersteller: * [/home/ss69/DPI/./INCA_libs/irun.lnx8664.12.20.nc/librun.so] Fehler 1
ncsc_run: * * * E,TBBLDF: Fehler beim build-test-Bibliothek
/home/DPI/./INCA_libs/irun.lnx8664.12.20.nc/librun.so

irun: * * * E,CCERR: Fehler bei der cc-compilation (status 1), exiting.

Wenn ich einfach versuchen, das zu kompilieren C mit gcc mit nachstehenden Befehl:
gcc -g-Wall -Werror -I/home/fftw/local/include -L/home/ss69/fftw/local/lib \
fftw_test_DPI.c -lfftw3 -lm -o fftw_test_DPI

Bekomme ich diesen Fehler:

/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../lib64/crt1.o: In Funktion _start':
(.text+0x20): undefined reference to
main'
collect2: ld zurückgegeben, 1 exit status

Haben Sie eine main-Funktion?
"Ich habe nicht eine main-Funktion, aber der linker sagt mir, dass ich nicht über eine main-Funktion..." - willkommen auf der Tautologie Club.
Vielleicht wollte Sie einfach nur kompilieren, nicht link (-c)
warum nimmst du nicht ein paar Augenblicke um zu verstehen, die Benutzer? Die meisten Menschen sind ehrlich in Ihrer Vorgehensweise und haben, aus Ihrer Sicht eine berechtigte Frage.
basierend auf Ihre Frage und einen Kommentar in eine Antwort, ich glaube, Sie brauchen zum Lesen eine grundlegende C-Buch zu verstehen, wie ein C-Programm zusammen gestellt werden. Du bist fehlen einige sehr einfache Konzepte.

InformationsquelleAutor sanforyou | 2013-08-06

Schreibe einen Kommentar