Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22202

nm shows the .so lib has the defined function, ld cannot find it [duplicate]

$
0
0

I'm working on an arm64 box.nm shows that my liblib1.so file has the defined function foo_incremented, ld cannot find it.

~/code/pack/inlib$ nm -D --demangle --defined --extern-only liblib1.so0000000000011020 B __end__0000000000000748 T _fini0000000000000730 T foo_incremented00000000000005c0 T _init

My project simply has 5 files: lib1.h, lib1.c, a.c, a.cc and Makefile.

// lib1.cint foo_incremented(int x) {  return x + 1;}
// lib1.h#ifndef LIB1_H#define LIB1_H#ifdef __cplusplus__extern "C" {#endifextern int foo_incremented(int x);#ifdef __cplusplus__}#endif#endif
// a.c#include <lib1.h>#include <stdio.h>int main(int argc, char* argv[]) {    int n = foo_incremented(11);    printf("foo%d\n", n);    return 0;}
//a.cc#include <lib1.h>#include <iostream>int main(int argc, char* argv[]) {    int n = foo_incremented(11);    std::cout<<n<<"\n";    std::cout<<"foo"<<"\n";    return 0;}
# Makefile.phony:    cleanlib1_source=lib1.c lib1.hclean:    -rm lib1.c.235r.iraliblib1.so: $(lib1_source)    cc -dynamic -o $@ $<a: a.c lib1.h    cc -v -Wl,-rpath=. -L. -I. -llib1 -o $@ $<acc: a.cc lib1.h    c++ -Wl,-v,-rpath=. -L. -I. -llib1 -o $@ $<

The output of make a:

~/code/pack/inlib$ make acc -Wl,-v,-rpath=. -L. -I. -llib1 -o a a.ccollect2 version 5.4.0 20160609/usr/bin/ld -plugin /usr/lib/gcc/aarch64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/aarch64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccimfYnQ.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --sysroot=/ --build-id --eh-frame-hdr --hash-style=gnu --as-needed -dynamic-linker /lib/ld-linux-aarch64.so.1 -X -EL -maarch64linux --fix-cortex-a53-843419 -z relro -o a /usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/crt1.o /usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/crti.o /usr/lib/gcc/aarch64-linux-gnu/5/crtbegin.o -L. -L/usr/lib/gcc/aarch64-linux-gnu/5 -L/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu -L/usr/lib/gcc/aarch64-linux-gnu/5/../../../../lib -L/lib/aarch64-linux-gnu -L/lib/../lib -L/usr/lib/aarch64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/aarch64-linux-gnu/5/../../.. -v -rpath=. -llib1 /tmp/cc0K5Hhf.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/aarch64-linux-gnu/5/crtend.o /usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/crtn.oGNU ld (GNU Binutils for Ubuntu) 2.26.1/tmp/cc0K5Hhf.o: In function `main':a.c:(.text+0x14): undefined reference to `foo_incremented'collect2: error: ld returned 1 exit statusMakefile:14: recipe for target 'a' failedmake: *** [a] Error 1

The output of make acc is pretty much the same as the previous one.

ld version: GNU ld (GNU Binutils for Ubuntu) 2.26.1, gcc version: gcc (Ubuntu/Linaro 5.4.0-6kord1~16.04.12) 5.4.0 20160609


Viewing all articles
Browse latest Browse all 22202

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>