swatbotics/apriltag

Cannot build on Ubuntu 18.04, gcc 6 and 7

amelnichenko opened this issue · 5 comments

I experienced an error during the make command.

The error on make is the following:

Scanning dependencies of target apriltag
[  3%] Building C object core/CMakeFiles/apriltag.dir/apriltag.c.o
[  5%] Building C object core/CMakeFiles/apriltag.dir/tag25h7.c.o
[  3%] Building C object core/CMakeFiles/apriltag.dir/tag16h5.c.o
[  7%] Building C object core/CMakeFiles/apriltag.dir/apriltag_quad_thresh.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag25h7.c:36:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag16h5.c:36:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag25h7.c: In function ‘tag25h7_create’:
/data/melnichenko/Progs/apriltag/core/tag25h7.c:41:15: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
    tf->name = strdup("tag25h7");
               ^~~~~~
               strcmp
/data/melnichenko/Progs/apriltag/core/tag25h7.c:41:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    tf->name = strdup("tag25h7");
             ^
/data/melnichenko/Progs/apriltag/core/tag16h5.c: In function ‘tag16h5_create’:
/data/melnichenko/Progs/apriltag/core/tag16h5.c:41:15: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
    tf->name = strdup("tag16h5");
               ^~~~~~
               strcmp
/data/melnichenko/Progs/apriltag/core/tag16h5.c:41:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    tf->name = strdup("tag16h5");
             ^
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.c:32:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/apriltag.c: In function ‘rotate90’:
/data/melnichenko/Progs/apriltag/core/apriltag.c:89:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int32_t c = 0; c < d; c++) {
                               ^
/data/melnichenko/Progs/apriltag/core/apriltag.c: In function ‘quick_decode_init’:
/data/melnichenko/Progs/apriltag/core/apriltag.c:180:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < family->ncodes; i++) {
                       ^
/data/melnichenko/Progs/apriltag/core/apriltag.c: In function ‘quad_decode’:
/data/melnichenko/Progs/apriltag/core/apriltag.c:602:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int pattern_idx = 0; pattern_idx < sizeof(patterns)/(5*sizeof(float)); pattern_idx ++) {
                                           ^
/data/melnichenko/Progs/apriltag/core/apriltag.c:607:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int i = 0; i < 2*family->black_border + family->d; i++) {
                           ^
/data/melnichenko/Progs/apriltag/core/apriltag.c:637:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int bitidx = 0; bitidx < family->d * family->d; bitidx++) {
                                 ^
/data/melnichenko/Progs/apriltag/core/apriltag.c: In function ‘apriltag_detector_detect’:
/data/melnichenko/Progs/apriltag/core/apriltag.c:1129:9: warning: implicit declaration of function ‘srandom’; did you mean ‘srand’? [-Wimplicit-function-declaration]
         srandom(0);
         ^~~~~~~
         srand
/data/melnichenko/Progs/apriltag/core/apriltag.c:1136:33: warning: implicit declaration of function ‘random’; did you mean ‘randf’? [-Wimplicit-function-declaration]
             int color = bias + (random() % (255-bias));
                                 ^~~~~~
                                 randf
[  9%] Building C object core/CMakeFiles/apriltag.dir/tag25h9.c.o
In file included from /data/melnichenko/Progs/apriltag/core/apriltag_quad_thresh.c:44:0:
/data/melnichenko/Progs/apriltag/core/common/unionfind.h: In function ‘unionfind_create’:
/data/melnichenko/Progs/apriltag/core/common/unionfind.h:63:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i <= maxid; i++) {
                       ^~
/data/melnichenko/Progs/apriltag/core/apriltag_quad_thresh.c: In function ‘apriltag_quad_thresh’:
/data/melnichenko/Progs/apriltag/core/apriltag_quad_thresh.c:1705:51: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 if (unionfind_get_set_size(uf, v) < td->qtp.min_cluster_pixels)
                                                   ^
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag25h9.c:36:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag25h9.c: In function ‘tag25h9_create’:
/data/melnichenko/Progs/apriltag/core/tag25h9.c:41:15: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
    tf->name = strdup("tag25h9");
               ^~~~~~
               strcmp
/data/melnichenko/Progs/apriltag/core/tag25h9.c:41:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    tf->name = strdup("tag25h9");
             ^
[ 11%] Building C object core/CMakeFiles/apriltag.dir/tag36h10.c.o
[ 13%] Building C object core/CMakeFiles/apriltag.dir/tag36h11.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag36h10.c:36:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag36h10.c: In function ‘tag36h10_create’:
/data/melnichenko/Progs/apriltag/core/tag36h10.c:41:15: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
    tf->name = strdup("tag36h10");
               ^~~~~~
               strcmp
/data/melnichenko/Progs/apriltag/core/tag36h10.c:41:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    tf->name = strdup("tag36h10");
             ^
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag36h11.c:36:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag36h11.c: In function ‘tag36h11_create’:
/data/melnichenko/Progs/apriltag/core/tag36h11.c:41:15: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
    tf->name = strdup("tag36h11");
               ^~~~~~
               strcmp
/data/melnichenko/Progs/apriltag/core/tag36h11.c:41:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    tf->name = strdup("tag36h11");
             ^
[ 15%] Building C object core/CMakeFiles/apriltag.dir/tag36artoolkit.c.o
[ 17%] Building C object core/CMakeFiles/apriltag.dir/g2d.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag36artoolkit.c:35:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag36artoolkit.c: In function ‘tag36artoolkit_create’:
/data/melnichenko/Progs/apriltag/core/tag36artoolkit.c:40:16: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
     tf->name = strdup("artoolkit");
                ^~~~~~
                strcmp
/data/melnichenko/Progs/apriltag/core/tag36artoolkit.c:40:14: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
     tf->name = strdup("artoolkit");
              ^
[ 19%] Building C object core/CMakeFiles/apriltag.dir/apriltag_family.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/apriltag_family.c:1:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
[ 21%] Building C object core/CMakeFiles/apriltag.dir/common/zarray.c.o
[ 23%] Building C object core/CMakeFiles/apriltag.dir/common/zhash.c.o
[ 25%] Building C object core/CMakeFiles/apriltag.dir/common/zmaxheap.c.o
/data/melnichenko/Progs/apriltag/core/common/zhash.c: In function ‘zhash_get’:
/data/melnichenko/Progs/apriltag/core/common/zhash.c:143:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < bucket->size; i++) {
                       ^
/data/melnichenko/Progs/apriltag/core/common/zhash.c: In function ‘zhash_get_volatile’:
/data/melnichenko/Progs/apriltag/core/common/zhash.c:166:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < bucket->size; i++) {
                       ^
/data/melnichenko/Progs/apriltag/core/common/zhash.c: In function ‘zhash_put_real’:
/data/melnichenko/Progs/apriltag/core/common/zhash.c:195:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < bucket->size; i++) {
                       ^
/data/melnichenko/Progs/apriltag/core/common/zhash.c: In function ‘zhash_remove’:
/data/melnichenko/Progs/apriltag/core/common/zhash.c:245:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < bucket->size; i++) {
                       ^
/data/melnichenko/Progs/apriltag/core/common/zhash.c:262:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (i != bucket->size - 1) {
                   ^~
/data/melnichenko/Progs/apriltag/core/common/zhash.c: In function ‘zhash_iterator_next_volatile’:
/data/melnichenko/Progs/apriltag/core/common/zhash.c:368:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (zit->idx < bucket->size) {
                      ^
/data/melnichenko/Progs/apriltag/core/common/zmaxheap.c: In function ‘zmaxheap_test’:
/data/melnichenko/Progs/apriltag/core/common/zmaxheap.c:369:14: warning: implicit declaration of function ‘random’; did you mean ‘rand’? [-Wimplicit-function-declaration]
         if ((random() & 1) == 0 && sz < cap) {
              ^~~~~~
              rand
[ 26%] Building C object core/CMakeFiles/apriltag.dir/common/unionfind.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/unionfind.c:32:0:
/data/melnichenko/Progs/apriltag/core/common/unionfind.h: In function ‘unionfind_create’:
/data/melnichenko/Progs/apriltag/core/common/unionfind.h:63:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i <= maxid; i++) {
                       ^~
[ 28%] Building C object core/CMakeFiles/apriltag.dir/common/matd.c.o
[ 30%] Building C object core/CMakeFiles/apriltag.dir/common/image_u8.c.o
/data/melnichenko/Progs/apriltag/core/common/image_u8.c: In function ‘image_u8_write_pnm’:
/data/melnichenko/Progs/apriltag/core/common/image_u8.c:181:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (im->width != fwrite(&im->buf[y*im->stride], 1, im->width, f)) {
                       ^~
[ 32%] Building C object core/CMakeFiles/apriltag.dir/common/pnm.c.o
[ 34%] Building C object core/CMakeFiles/apriltag.dir/common/image_f32.c.o
[ 36%] Building C object core/CMakeFiles/apriltag.dir/common/image_u32.c.o
[ 38%] Building C object core/CMakeFiles/apriltag.dir/common/workerpool.c.o
[ 40%] Building C object core/CMakeFiles/apriltag.dir/common/time_util.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/time_util.c:32:0:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/common/time_util.c:57:2: error: invalid preprocessing directive #void
 #void utime_to_timespec(int64_t v, struct timespec *ts)
  ^~~~
/data/melnichenko/Progs/apriltag/core/common/time_util.c:58:2: error: invalid preprocessing directive #{
 #{
  ^
/data/melnichenko/Progs/apriltag/core/common/time_util.c:59:6: error: invalid preprocessing directive #ts
 #    ts->tv_sec  = (time_t) utime_get_seconds(v);
      ^~
/data/melnichenko/Progs/apriltag/core/common/time_util.c:60:6: error: invalid preprocessing directive #ts
 #    ts->tv_nsec = (suseconds_t) utime_get_useconds(v)*1000;
      ^~
/data/melnichenko/Progs/apriltag/core/common/time_util.c:61:2: error: invalid preprocessing directive #}
 #}
  ^
/data/melnichenko/Progs/apriltag/core/common/time_util.c: In function ‘timeutil_usleep’:
/data/melnichenko/Progs/apriltag/core/common/time_util.c:66:12: warning: implicit declaration of function ‘usleep’; did you mean ‘sleep’? [-Wimplicit-function-declaration]
     return usleep(useconds);
            ^~~~~~
            sleep
core/CMakeFiles/apriltag.dir/build.make:542: recipe for target 'core/CMakeFiles/apriltag.dir/common/time_util.c.o' failed
make[2]: *** [core/CMakeFiles/apriltag.dir/common/time_util.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:93: recipe for target 'core/CMakeFiles/apriltag.dir/all' failed
make[1]: *** [core/CMakeFiles/apriltag.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

The output of cmake is the following:

-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for one of the modules 'opencv>=2.3;opencv-2.3.1;opencv-3.0.0'
-- Configuring done
-- Generating done
-- Build files have been written to: /data/melnichenko/Progs/apriltag/build

I found that this issue can be fixed for me by commenting/deleting the function
void utime_to_timespec(int64_t v, struct timespec *ts)
i.e lines 57-61 of core/common/time_util.c

Than you for your work.
Best regards, Alexandra.

I am concerned about some of the errors I am seeing above, for instance this one:

/data/melnichenko/Progs/apriltag/core/common/time_util.c:57:2: error: invalid preprocessing directive #void
 #void utime_to_timespec(int64_t v, struct timespec *ts)

If you look at the corresponding file in the master branch, you will find the corresponding line 57 does not start with a hash mark # .

Perhaps you attempted to introduce Python-style comments to a C file? In any event, the code probably been improperly edited. Please check out a clean copy of the repo and try again – if you still see errors, we can proceed from there.

Sorry, maybe I put he wrong output by mistake. The correct one is

Scanning dependencies of target apriltag
[  1%] Building C object core/CMakeFiles/apriltag.dir/tag25h7.c.o
[  3%] Building C object core/CMakeFiles/apriltag.dir/tag16h5.c.o
[  7%] Building C object core/CMakeFiles/apriltag.dir/apriltag_quad_thresh.c.o
[  7%] Building C object core/CMakeFiles/apriltag.dir/apriltag.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag25h7.c:36:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag25h7.c: In function ‘tag25h7_create’:
/data/melnichenko/Progs/apriltag/core/tag25h7.c:41:15: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
    tf->name = strdup("tag25h7");
               ^~~~~~
               strcmp
/data/melnichenko/Progs/apriltag/core/tag25h7.c:41:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    tf->name = strdup("tag25h7");
             ^
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag16h5.c:36:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.c:32:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag16h5.c: In function ‘tag16h5_create’:
/data/melnichenko/Progs/apriltag/core/tag16h5.c:41:15: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
    tf->name = strdup("tag16h5");
               ^~~~~~
               strcmp
/data/melnichenko/Progs/apriltag/core/tag16h5.c:41:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    tf->name = strdup("tag16h5");
             ^
/data/melnichenko/Progs/apriltag/core/apriltag.c: In function ‘rotate90’:
/data/melnichenko/Progs/apriltag/core/apriltag.c:89:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int32_t c = 0; c < d; c++) {
                               ^
/data/melnichenko/Progs/apriltag/core/apriltag.c: In function ‘quick_decode_init’:
/data/melnichenko/Progs/apriltag/core/apriltag.c:180:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < family->ncodes; i++) {
                       ^
/data/melnichenko/Progs/apriltag/core/apriltag.c: In function ‘quad_decode’:
/data/melnichenko/Progs/apriltag/core/apriltag.c:602:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int pattern_idx = 0; pattern_idx < sizeof(patterns)/(5*sizeof(float)); pattern_idx ++) {
                                           ^
/data/melnichenko/Progs/apriltag/core/apriltag.c:607:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int i = 0; i < 2*family->black_border + family->d; i++) {
                           ^
/data/melnichenko/Progs/apriltag/core/apriltag.c:637:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int bitidx = 0; bitidx < family->d * family->d; bitidx++) {
                                 ^
/data/melnichenko/Progs/apriltag/core/apriltag.c: In function ‘apriltag_detector_detect’:
/data/melnichenko/Progs/apriltag/core/apriltag.c:1129:9: warning: implicit declaration of function ‘srandom’; did you mean ‘srand’? [-Wimplicit-function-declaration]
         srandom(0);
         ^~~~~~~
         srand
/data/melnichenko/Progs/apriltag/core/apriltag.c:1136:33: warning: implicit declaration of function ‘random’; did you mean ‘randf’? [-Wimplicit-function-declaration]
             int color = bias + (random() % (255-bias));
                                 ^~~~~~
                                 randf
In file included from /data/melnichenko/Progs/apriltag/core/apriltag_quad_thresh.c:44:0:
/data/melnichenko/Progs/apriltag/core/common/unionfind.h: In function ‘unionfind_create’:
/data/melnichenko/Progs/apriltag/core/common/unionfind.h:63:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i <= maxid; i++) {
                       ^~
/data/melnichenko/Progs/apriltag/core/apriltag_quad_thresh.c: In function ‘apriltag_quad_thresh’:
/data/melnichenko/Progs/apriltag/core/apriltag_quad_thresh.c:1705:51: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 if (unionfind_get_set_size(uf, v) < td->qtp.min_cluster_pixels)
                                                   ^
[  9%] Building C object core/CMakeFiles/apriltag.dir/tag25h9.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag25h9.c:36:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag25h9.c: In function ‘tag25h9_create’:
/data/melnichenko/Progs/apriltag/core/tag25h9.c:41:15: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
    tf->name = strdup("tag25h9");
               ^~~~~~
               strcmp
/data/melnichenko/Progs/apriltag/core/tag25h9.c:41:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    tf->name = strdup("tag25h9");
             ^
[ 11%] Building C object core/CMakeFiles/apriltag.dir/tag36h10.c.o
[ 13%] Building C object core/CMakeFiles/apriltag.dir/tag36h11.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag36h10.c:36:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag36h10.c: In function ‘tag36h10_create’:
/data/melnichenko/Progs/apriltag/core/tag36h10.c:41:15: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
    tf->name = strdup("tag36h10");
               ^~~~~~
               strcmp
/data/melnichenko/Progs/apriltag/core/tag36h10.c:41:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    tf->name = strdup("tag36h10");
             ^
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag36h11.c:36:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag36h11.c: In function ‘tag36h11_create’:
/data/melnichenko/Progs/apriltag/core/tag36h11.c:41:15: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
    tf->name = strdup("tag36h11");
               ^~~~~~
               strcmp
/data/melnichenko/Progs/apriltag/core/tag36h11.c:41:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    tf->name = strdup("tag36h11");
             ^
[ 15%] Building C object core/CMakeFiles/apriltag.dir/tag36artoolkit.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/tag36artoolkit.c:35:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/tag36artoolkit.c: In function ‘tag36artoolkit_create’:
/data/melnichenko/Progs/apriltag/core/tag36artoolkit.c:40:16: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration]
     tf->name = strdup("artoolkit");
                ^~~~~~
                strcmp
/data/melnichenko/Progs/apriltag/core/tag36artoolkit.c:40:14: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
     tf->name = strdup("artoolkit");
              ^
[ 17%] Building C object core/CMakeFiles/apriltag.dir/g2d.c.o
[ 19%] Building C object core/CMakeFiles/apriltag.dir/apriltag_family.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/timeprofile.h:44:0,
                 from /data/melnichenko/Progs/apriltag/core/apriltag.h:45,
                 from /data/melnichenko/Progs/apriltag/core/apriltag_family.c:1:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
[ 21%] Building C object core/CMakeFiles/apriltag.dir/common/zarray.c.o
[ 23%] Building C object core/CMakeFiles/apriltag.dir/common/zhash.c.o
[ 25%] Building C object core/CMakeFiles/apriltag.dir/common/zmaxheap.c.o
/data/melnichenko/Progs/apriltag/core/common/zhash.c: In function ‘zhash_get’:
/data/melnichenko/Progs/apriltag/core/common/zhash.c:143:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < bucket->size; i++) {
                       ^
/data/melnichenko/Progs/apriltag/core/common/zhash.c: In function ‘zhash_get_volatile’:
/data/melnichenko/Progs/apriltag/core/common/zhash.c:166:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < bucket->size; i++) {
                       ^
/data/melnichenko/Progs/apriltag/core/common/zhash.c: In function ‘zhash_put_real’:
/data/melnichenko/Progs/apriltag/core/common/zhash.c:195:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < bucket->size; i++) {
                       ^
/data/melnichenko/Progs/apriltag/core/common/zhash.c: In function ‘zhash_remove’:
/data/melnichenko/Progs/apriltag/core/common/zhash.c:245:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < bucket->size; i++) {
                       ^
/data/melnichenko/Progs/apriltag/core/common/zhash.c:262:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (i != bucket->size - 1) {
                   ^~
/data/melnichenko/Progs/apriltag/core/common/zhash.c: In function ‘zhash_iterator_next_volatile’:
/data/melnichenko/Progs/apriltag/core/common/zhash.c:368:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (zit->idx < bucket->size) {
                      ^
/data/melnichenko/Progs/apriltag/core/common/zmaxheap.c: In function ‘zmaxheap_test’:
/data/melnichenko/Progs/apriltag/core/common/zmaxheap.c:369:14: warning: implicit declaration of function ‘random’; did you mean ‘rand’? [-Wimplicit-function-declaration]
         if ((random() & 1) == 0 && sz < cap) {
              ^~~~~~
              rand
[ 26%] Building C object core/CMakeFiles/apriltag.dir/common/unionfind.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/unionfind.c:32:0:
/data/melnichenko/Progs/apriltag/core/common/unionfind.h: In function ‘unionfind_create’:
/data/melnichenko/Progs/apriltag/core/common/unionfind.h:63:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i <= maxid; i++) {
                       ^~
[ 28%] Building C object core/CMakeFiles/apriltag.dir/common/matd.c.o
[ 30%] Building C object core/CMakeFiles/apriltag.dir/common/image_u8.c.o
/data/melnichenko/Progs/apriltag/core/common/image_u8.c: In function ‘image_u8_write_pnm’:
/data/melnichenko/Progs/apriltag/core/common/image_u8.c:181:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (im->width != fwrite(&im->buf[y*im->stride], 1, im->width, f)) {
                       ^~
[ 32%] Building C object core/CMakeFiles/apriltag.dir/common/pnm.c.o
[ 34%] Building C object core/CMakeFiles/apriltag.dir/common/image_f32.c.o
[ 36%] Building C object core/CMakeFiles/apriltag.dir/common/image_u32.c.o
[ 38%] Building C object core/CMakeFiles/apriltag.dir/common/workerpool.c.o
[ 40%] Building C object core/CMakeFiles/apriltag.dir/common/time_util.c.o
In file included from /data/melnichenko/Progs/apriltag/core/common/time_util.c:32:0:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:45: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void    utime_to_timespec(int64_t v, struct timespec *ts);
                                             ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/common/time_util.c:57:42: warning: ‘struct timespec’ declared inside parameter list will not be visible outside of this definition or declaration
 void utime_to_timespec(int64_t v, struct timespec *ts)
                                          ^~~~~~~~
/data/melnichenko/Progs/apriltag/core/common/time_util.c:57:6: error: conflicting types for ‘utime_to_timespec’
 void utime_to_timespec(int64_t v, struct timespec *ts)
      ^~~~~~~~~~~~~~~~~
In file included from /data/melnichenko/Progs/apriltag/core/common/time_util.c:32:0:
/data/melnichenko/Progs/apriltag/core/common/time_util.h:48:9: note: previous declaration of ‘utime_to_timespec’ was here
 void    utime_to_timespec(int64_t v, struct timespec *ts);
         ^~~~~~~~~~~~~~~~~
/data/melnichenko/Progs/apriltag/core/common/time_util.c: In function ‘utime_to_timespec’:
/data/melnichenko/Progs/apriltag/core/common/time_util.c:59:7: error: dereferencing pointer to incomplete type ‘struct timespec’
     ts->tv_sec  = (time_t) utime_get_seconds(v);
       ^~
/data/melnichenko/Progs/apriltag/core/common/time_util.c: In function ‘timeutil_usleep’:
/data/melnichenko/Progs/apriltag/core/common/time_util.c:66:12: warning: implicit declaration of function ‘usleep’; did you mean ‘sleep’? [-Wimplicit-function-declaration]
     return usleep(useconds);
            ^~~~~~
            sleep
core/CMakeFiles/apriltag.dir/build.make:542: recipe for target 'core/CMakeFiles/apriltag.dir/common/time_util.c.o' failed
make[2]: *** [core/CMakeFiles/apriltag.dir/common/time_util.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:93: recipe for target 'core/CMakeFiles/apriltag.dir/all' failed
make[1]: *** [core/CMakeFiles/apriltag.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

The repository is certainly clean one updated to the latest commit.

As I mentioned, I managed to build it with void utime_to_timespec(int64_t v, struct timespec *ts)
deleted in core/common/time_util.c but I get Segmentation fault (core dumped) on every alpintag demo((

Initially I had no clue how to fix this, but on the Ubuntu 18.04 box I had access to, changing from -std=c99 to -std=gnu99 fixed the problem. Thanks, Google! https://stackoverflow.com/questions/3875197/linux-gcc-with-std-c99-complains-about-not-knowing-struct-timespec

Committed in ac58e4c – please let me know if that fixed the problem for you.

Thank you very much for the fast fix! It seems to work now.

The last quick question, would you please advise how to make my image to be detected? The sample from images/ works well, but mine doesn't although I don't see a big difference((
img_20180626_160909_small2