[dpdk-dev] [PATCH] eal/linux: fix build

Ananyev, Konstantin konstantin.ananyev at intel.com
Thu Mar 5 10:28:13 CET 2015



> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Qiu, Michael
> Sent: Thursday, March 05, 2015 9:13 AM
> To: Thomas Monjalon; David Marchand
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] eal/linux: fix build
> 
> On 3/4/2015 6:24 AM, Thomas Monjalon wrote:
> >>> Compilation fails in some distributions because of missing unistd.h
> >>> needed for pread/pwrite (seen with Suse):
> >>>         lib/librte_eal/linuxapp/eal/eal_pci_uio.c:62:2:
> >>>         error: implicit declaration of function 'pread'
> >>>
> >>> Fixes: 4a499c649590 ("eal/linux: enable uio_pci_generic support")
> >>>
> >>> Signed-off-by: Thomas Monjalon <thomas.monjalon at 6wind.com>
> >> Acked-by: David Marchand <david.marchand at 6wind.com>
> > Applied
> 
> Hi, Thomas
> 
> This patch may be need to be reverted, as the error still exists.
> 
> suse-11-sp3-32:~/dpdk # uname -a
> Linux suse-11-sp3-32 3.0.76-0.11-pae #1 SMP Fri Jun 14 08:21:43 UTC 2013
> (ccab990) i686 i686 i386 GNU/Linux
> 
> suse-11-sp3-32:~/dpdk # gcc -v
> Using built-in specs.
> COLLECT_GCC=gcc
> COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.5.1/lto-wrapper
> Target: i686-pc-linux-gnu
> Configured with: ./configure
> Thread model: posix
> gcc version 4.5.1 (GCC)
> 
> As I try to check the manual of pread, find that it has two:
> ----------------------------------------------------------
> Man: find all matching manual pages
>  * pread (2)
>    pread (3p)
> Man: What manual page do you want?
> Man:
> -------------------------------------------------------------
> PREAD(2)                                                         Linux
> Programmer's
> Manual                                                        PREAD(2)
> 
> 
> 
> NAME
>        pread, pwrite - read from or write to a file descriptor at a
> given offset
> 
> SYNOPSIS
>        #define _XOPEN_SOURCE 500
> 
>        #include <unistd.h>
> 
>        ssize_t pread(int fd, void *buf, size_t count, off_t offset);
> 
>        ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
> 
> --------------------------------------------------------------------------------------------------------------------------------------------
> 
> READ(3P)                                                         POSIX
> Programmer's
> Manual                                                        READ(3P)
> 
> 
> 
> PROLOG
>        This  manual page is part of the POSIX Programmer's Manual.  The
> Linux implementation of this interface may differ (consult the
> corresponding Linux
>        manual page for details of Linux behavior), or the interface may
> not be implemented on Linux.
> 
> NAME
>        pread, read - read from a file
> 
> SYNOPSIS
>        #include <unistd.h>
> 
> 
> 
>        ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset);
>        ssize_t read(int fildes, void *buf, size_t nbyte);
> 
> 
> DESCRIPTION
> 
> ------------------------------------------------------------------------------------------------------------------------------------------
> 
> While I try to add marco #define _XOPEN_SOURCE 500
> 
> Other errors show up
> 
> Who knows how to solve this issue?
> 
> Thanks,
> Michael
> 
> >

Can you try to add:
CFLAGS_<file_name>.o := -D_GNU_SOURCE

to your Makefile?

Konstantin


More information about the dev mailing list