If I were you I'd start by running the test suites in your environment and work toward the answer to the question of why example code doesn't compile. If the suites, especially parts with references to the fields that are problems with examples don't build either then I'd turn on the compile options to capture the preprocessed source so you can see the actual class declarations. If the test does build but the example doesn't then finding the declaration difference that explains the failure could shed light on the config/install/compile environment detail that causes the faulty declaration. Tracking down the actual specific hosts that successful tests have completed on might allow you to create that environment in a VM to get by with until the deficit in your desired host is discovered and overcome. Pete
May 9, 2026 8:29:19 PM Scott Hall <[email protected]>: > Here's a link to the tarball of the library: > https://www.kernel.org/pub/software/libs/libgpiod/libgpiod-2.1.3.tar.xz > > - After untarring, go into the resulting libgpiod-2.1.3 directory and follow > the README file to build the library: > ● ./configure --enable-bindings-cxx --prefix=/usr/local > ● make > ● sudo make install > > This will generate: > □ Headers have been installed in: /usr/local/include > gpiodcxx/ gpiod.h gpiod.hpp > > □ Libraries have been installed in: /usr/local/lib > libgpiod.a libgpiodcxx.la[http://libgpiodcxx.la]* > libgpiodcxx.so.2@ libgpiod.la[http://libgpiod.la]* libgpiod.so.3@ > pkgconfig/ > libgpiodcxx.a libgpiodcxx.so@ libgpiodcxx.so.2.1.0* libgpiod.so@ > libgpiod.so.3.1.2* > > In the untarred libgpiod-2.1.3 directory you'll find an examples directory > for C-language sources (which also don't work) and a bindings/cxx directory > of the library classes, and bindings/cxx/examples which is the examples that > I am having problems with not compiling. > >> $ g++ reconfigure_input_to_output.cpp >> reconfigure_input_to_output.cpp:18:22: error: ‘offset’ in ‘class >> gpiod::line’ does not name a type >> 18 | const ::gpiod::line::offset line_offset = 5; >> | ^~~~~~ >> reconfigure_input_to_output.cpp: In function ‘int main()’: >> reconfigure_input_to_output.cpp:26:33: error: ‘class gpiod::chip’ has no >> member named ‘prepare_request’ >> 26 | .prepare_request() >> | ^~~~~~~~~~~~~~~ >> reconfigure_input_to_output.cpp:29:40: error: ‘line_offset’ was not declared >> in this scope >> 29 | line_offset, >> | ^~~~~~~~~~~ >> reconfigure_input_to_output.cpp:30:49: error: ‘line_settings’ is not a >> member of ‘gpiod’ >> 30 | >> ::gpiod::line_settings().set_direction( >> | ^~~~~~~~~~~~~ >> reconfigure_input_to_output.cpp:31:63: error: ‘gpiod::line::direction’ is >> not a class, namespace, or enumeration >> 31 | >> ::gpiod::line::direction::INPUT)) >> | >> ^~~~~~~~~ >> reconfigure_input_to_output.cpp:37:56: error: ‘gpiod::line::value’ has not >> been declared >> 37 | ::gpiod::line::value::ACTIVE >> ? >> | ^~~~~ >> reconfigure_input_to_output.cpp:43:44: error: ‘line_config’ is not a member >> of ‘gpiod’ >> 43 | >> request.reconfigure_lines(::gpiod::line_config().add_line_settings( >> | ^~~~~~~~~~~ >> reconfigure_input_to_output.cpp:45:26: error: ‘line_settings’ is not a >> member of ‘gpiod’ >> 45 | ::gpiod::line_settings() >> | ^~~~~~~~~~~~~ >> reconfigure_input_to_output.cpp:46:55: error: ‘gpiod::line::direction’ is >> not a class, namespace, or enumeration >> 46 | >> .set_direction(::gpiod::line::direction::OUTPUT) >> | ^~~~~~~~~ >> reconfigure_input_to_output.cpp:47:58: error: ‘gpiod::line::value’ has not >> been declared >> 47 | >> .set_output_value(::gpiod::line::value::INACTIVE))); >> | ^~~~~ >> reconfigure_input_to_output.cpp:52:56: error: ‘gpiod::line::value’ has not >> been declared >> 52 | ::gpiod::line::value::ACTIVE >> ? >> | ^~~~~ > > As a side note, you'll want to build the library in a Linux environment. Or > by adding the --host=aarch64-linux-gnu option to the configure command and > putting your crosscompiler toolchain early in your path, you can build the > library for crosscompiled systems. Note that it does not build for a MinGW > because of missing the ioctl() functionality. > > > On Sat, May 9, 2026 at 9:03 AM Pete Soper <[email protected]> wrote: >> Send some decent and specific links and compiler messages to the list. >> Pete >> >> May 9, 2026 1:12:59 AM Scott Hall via TriEmbed <[email protected]>: >> >>> I am stuck and hope someone in TriEmbed or EMP might know .. >>> >>> I need to program a Linux process using the libgpiod library's C++ >>> bindings. Trouble is all the examples in the source repo don't compile, and >>> all other forum answers regurgitate the same examples. The same >>> environment's rebuilt commandline utilities work fine. >>> >>> Does anyone have any working example of reading some GPIO lines, and >>> setting others? >>> >>> -- >>> Scott G. Hall >>> Raleigh, NC, USA >>> [email protected] >>> /”//Failure is the opportunity to begin again more intelligently.” -- Henry >>> Ford/ > > > -- > -- > Scott G. Hall > Raleigh, NC, USA > [email protected] > /”//Failure is the opportunity to begin again more intelligently.” -- Henry > Ford/
_______________________________________________ Triangle, NC Embedded Interest Group mailing list To post message: [email protected] List info: http://mail.triembed.org/mailman/listinfo/triembed_triembed.org TriEmbed web site: https://TriEmbed.org To unsubscribe, click link and send a blank message: mailto:[email protected]?subject=unsubscribe Searchable email archive available at https://www.mail-archive.com/[email protected]/
