AdvancedNetworkingSystems / prince

Implementing PopRouting
Other
10 stars 3 forks source link

Compiling against LEDE v17.01 fails #29

Open edoput opened 6 years ago

edoput commented 6 years ago

Here is the output from the relevant error compiling against the EdgeRouter X

make[4]: Entering directory '/root/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/prince-v0.2'
mkdir -p prince/build/
make -C graph-parser_c/src/
make[5]: Entering directory '/root/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/prince-v0.2/graph-parser_c/src'
mkdir -p ../build/lib/
mipsel-openwrt-linux-musl-gcc -fPIC -pthread  -shared -Wl,-soname,libgraphcparser.so -o ../build/lib/libgraphcparser.so graph_parser.o brandes.o biconnected.o graph/graph.o graph/list.o  
make[5]: Leaving directory '/root/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/prince-v0.2/graph-parser_c/src'
make -C prince/src
make[5]: Entering directory '/root/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/prince-v0.2/prince/src'
cp common_c.h common.h
mipsel-openwrt-linux-musl-gcc -std=gnu11 -fPIC -D_GNU_SOURCE -o ../build/prince_c prince.o lib/ini.o parser.o -L../../graph-parser_c/build/lib -lgraphcparser -ldl -ljson-c -lm
../../graph-parser_c/build/lib/libgraphcparser.so: undefined reference to `round_decimal'
collect2: error: ld returned 1 exit status
Makefile:16: recipe for target 'prince_c' failed
make[5]: *** [prince_c] Error 1
make[5]: Leaving directory '/root/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/prince-v0.2/prince/src'
Makefile:2: recipe for target 'all' failed
make[4]: *** [all] Error 2
make[4]: Leaving directory '/root/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/prince-v0.2'
Makefile:46: recipe for target '/root/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/prince-v0.2/.built' failed
make[3]: *** [/root/openwrt/build_dir/target-mipsel_24kc_musl-1.1.16/prince-v0.2/.built] Error 2
make[3]: Leaving directory '/root/openwrt/feeds/routing/poprouting'
package/Makefile:105: recipe for target 'package/feeds/routing/poprouting/compile' failed
make[2]: *** [package/feeds/routing/poprouting/compile] Error 2
make[2]: Leaving directory '/root/openwrt'
package/Makefile:101: recipe for target '/root/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.package_compile' failed
make[1]: *** [/root/openwrt/staging_dir/target-mipsel_24kc_musl-1.1.16/stamp/.package_compile] Error 2
make[1]: Leaving directory '/root/openwrt'
/root/openwrt/include/toplevel.mk:197: recipe for target 'world' failed
make: *** [world] Error 2

I'm attaching the config file to reproduce this build

config

gabri94 commented 6 years ago

I think this is similar to a previous issue with static inline function like the one producing the bug:

static inline double round_decimal(double d){
    return roundf(d*decimal_places)/decimal_places;
}

Removing one of the two definition should fix the problem.

gabri94 commented 6 years ago

see min(int a, int b) function in the graph_parser_c library