Melika
Melika

Reputation: 409

undefined reference to 'pruio_new' and 'pruio_config' on beaglebone black

I'm trying to get the ADC running on beaglebone black. The OS is Debian GNU/Linux 7.7. I'm using C language. When I try to compile the following code:

  #include <stdio.h>
  #include <unistd.h>
  #include "pruio_c_wrapper.h"
  #include "pruio_pins.h"

  int main(int argc, const char *argv[]) { 
  PruIo *io = pruio_new(0, 0x98, 0, 1);
  if (io->Errr) {
     printf("Initialisation failed (%s)\n", io->Errr);
     return 1;
  }

  if(pruio_config(io, 0, 0x1FE, 0, 4, 0)){
     printf("Config failed (%s)\n", io->Errr); 
     return 1;
  }


  int a = 0;
  int i;
  while(1){
     printf("\r%12o  %12o  %12o  %12o  %4X %4X %4X %4X %4X %4X %4X %4X\n", io->Gpio[0].Stat, io->Gpio[1].Stat, io->Gpio[2].Stat, io->Gpio[3].Stat, io->Value[1], io->Value[2], io->Value[3], io->Value[4], io->Value[5], io->Value[6], io->Value[7], io->Value[8]);
     fflush(STDIN_FILENO);
     usleep(1000);
   }


  pruio_destroy(io);

       return 0;
  }

But I get the following error:

undefined reference to 'pruio_new'
undefined reference to 'pruio_config'

I installed everything like FreeBasic compiler and pruss driver kit for freebasic and BBB and libpruio. I also copied all the header files in the same directory as the .c file, including "pruio_c_wrapper.h", "pruio-pins.h", "pruio.h" and all the other files in the src directory of libpruio. But it doesn't work.

Could you please tell me what to do? Thanks

Upvotes: 1

Views: 788

Answers (2)

TJF
TJF

Reputation: 21

libfb is the FreeBASIC run-time library. When you want to compile against the old libpruio-0.0.x versions, you'll need an old FreeBASIC installation from

www{dot}freebasic-portal.de/dlfiles/452/bbb_fbc-0.0.2.tar.xz

Which installs /usr/local/lib/freebasic/libfb.so.

See the libpruio-0.0.x C example codes for compiler command line arguments (ie. header section of io_input.c).

But I recommend to use the new version libpruio-0.2 from (the last post links to the documentation of this new version)

http://www.freebasic-portal.de/dlfiles/592/libpruio-0.2.tar.bz2

which doesn't have this pitfalls, gcc compiles without FB installation, and provides new features like pinmuxing, PWM, CAP. There're small bugs in this versions C header, which is now named pruio.h: a missing enum and a copy / paste bug regarding a function name. See this thread for details:

http://www.freebasic.net/forum/viewtopic.php?f=14&t=22501

BR

Upvotes: 2

Iharob Al Asimi
Iharob Al Asimi

Reputation: 53016

Ok, I downloaded it, the binaries are in libpruio-0.0.2/libpruio/src/c_wrapper and so are the include files, copy the headers and libpruio.so to the same directory where the test.c file resides, and then

  1. For the includes, you need to to append libpruio's include directory to the compiler command using -I. then you can do

    #include <pruio_c_wrapper.h>
    #include <pruio_pins.h>
    
  2. You need to append the library to the linker command, with

    -L. -lpruio
    

your complete compilation command will be then

gcc -o test -I. -L. -lpruio test.c

Upvotes: 0

Related Questions