What's the output from "file .../main.o" and all your other object files, from both GCC and clang? Maybe something shows up there.
Clang:
Code:
$ for o in `ls | grep -i "\.o"`; do file ${o}; done
abc.o: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped
gnrcabt.o: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped
main.o: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped
g++:
Code:
$ for o in `ls | grep -i "\.o"`; do file ${o}; done
abc.o: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped
gnrcabt.o: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped
main.o: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped
--- Edit ---
After stripping the object files I got this error from Clang:
Code:
/usr/bin/ld: error in gnrcabt.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in abc.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in main.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/lib/crt1.o: In function `_start':
/usr/src/lib/csu/amd64/crt1.c:(.text+0x16b): undefined reference to `main'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1
Last edited by AntumDeluge; 01-09-2015 at 12:09 PM..
main() is where your program begins, if that's missing it can't create an executable. Libraries on the other hand don't need a main().
Check that the code which is supposed to define it is getting compiled, and also check that main is being exported properly. If it's being hashed into a C++ overloaded name, the linker might not find it. You could give it a definition to avoid it being name-mangled.
Code:
// Forcing main to export as _main in a C++ program
extern "C" int main(int argc, char *argv[]);
// Actual definition for main
int main(int argc, char *argv[]) {
...
}
Last edited by Corona688; 01-09-2015 at 12:24 PM..
Hi,
Currently I am migrating codes from unix to Linux. When doing linking(ld) getting the below error.
Error is :ld: invalid BFD target `--shared'
Providing the script of the ld:
ld -b -G -o lib/libatk.so ./src/atk_db.o ./src/atk_gcl.o ./src/atk_options.o ./src/atk_exception.o... (1 Reply)
Hi,
I have the following files:
// file.hvoid foo();
int i = 5; // should be just declared as extern int i;
// file1.c#include <stdio.h>
#include "file.h"
void foo() {
i = 10;
printf("%d\n", i);
}
// file2.c#include <stdio.h>
#include "file.h"
int main() {
foo(); (9 Replies)
Hi, I am getting the error
01.30 Invalid shell error
I am running the bash shell script in the korn login shell.
I have mentioned the #!/bin/bash statement in the my script but not sure why it is giving this error to me.. (4 Replies)
Hello, guys!
I have a web server that uses PHP as DSO. Do you know any tool that can help me monitoring the CPU usage for any domain/subdomain that is hosted on this server? (1 Reply)
Hey everyone, I can't figure out this symbol referencing error after looking at it for the longest time, and I figured some fresh eyes might be able to point something out I am overlooking.
Undefined first referenced
symbol in... (1 Reply)
Getting the following error ,
ld: /opt/syncsort39/lib/libsyncsort.sl: Mismatched ABI. 64-bit PA shared library found in 32-bit link.
Is there any difference in the ld options in opt file while linking a 64 bit shared library ? Or is the problem because we are trying to link both 32 bit and 64... (3 Replies)
Undefined first referenced
symbol in file
std::basic_ostream<char, std::char_traits<char> >::operator<<(int)/var/tmp//ccTR
std::cerr /var/tmp//ccTRcjui.o
std::cout /var/tmp//ccTRcjui.o... (1 Reply)
Hi
I'm getting
ld: fatal: option -h and building a dynamic executable are incompatible
ld: fatal: Flags processing errors
When I run
ld -shared -L/usr/dt/lib -lDtSvc -o builtin.so Workspace.o
after running
gcc -fPIC -I/usr/X11R6/include -I/usr/dt/include -c Workspace.c
I'm... (6 Replies)