juj / fbcp-ili9341

A blazing fast display driver for SPI-based LCD displays for Raspberry Pi A, B, 2, 3, 4 and Zero
MIT License
1.55k stars 258 forks source link

Compiling issues on 64bit Raspi OS #246

Open lsylx opened 2 years ago

lsylx commented 2 years ago
pi@raspberrypi:~/fbcp-ili9341/build $ arch=x86_64 cmake -DSPI_BUS_CLOCK_DIVISOR=40 -DWAVESHARE_1INCH3_LCD_HAT=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 ..
CMake Warning (dev) in CMakeLists.txt:
  No project() command is present.  The top-level CMakeLists.txt file must
  contain a literal, direct call to the project() command.  Add a line of
  code such as

    project(ProjectName)

  near the top of the file, but after cmake_minimum_required().

  CMake is pretending there is a "project(Project)" command on the first
  line.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Doing a Release build
-- Board revision: a22082
-- Detected this Pi to be one of: Pi 2B rev. 1.2, 3B, 3B+, 3A+, CM3, CM3 lite, CM4 or 4B(1GB,2GB,4GB RAM), with 4 hardware cores and ARMv8-A instruction set CPU.
-- Enabling optimization flags that target ARMv8-A instruction set (Pi 2B >= rev. 1.2, 3B, 3B+, CM3 or CM3 lite)
-- Enabling fbcp-ili9341 backlight control
-- Scaling source image to view. If the HDMI resolution does not match the SPI display resolution, this will produce blurriness. Match the HDMI display resolution with the SPI resolution in /boot/config.txt to get crisp pixel perfect rendering, or alternatively pass -DDISPLAY_CROPPED_INSTEAD_OF_SCALING=ON to crop instead of scale if you want to view the center of the screen pixel perfect when HDMI and SPI resolutions do not match.
-- Preserving aspect ratio when scaling source image to the SPI display, introducing letterboxing/pillarboxing if HDMI and SPI aspect ratios are different (Pass -DDISPLAY_BREAK_ASPECT_RATIO_WHEN_SCALING=ON to stretch HDMI to cover full screen if you do not care about aspect ratio)
-- SPI_BUS_CLOCK_DIVISOR set to 40. Try setting this to a higher value (must be an even number) if this causes problems. Display update speed = core_freq/divisor. (on Pi3B, by default core_freq=400). A safe starting default value may be -DSPI_BUS_CLOCK_DIVISOR=40
-- USE_DMA_TRANSFERS enabled, this improves performance. Try running CMake with -DUSE_DMA_TRANSFERS=OFF it this causes problems, or try adjusting the DMA channels to use with -DDMA_TX_CHANNEL=<num> -DDMA_RX_CHANNEL=<num>.
-- Targeting WaveShare 240x240 1.3inch IPS LCD Hat with ST7789VW controller
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    WAVESHARE_1INCH3_LCD_HAT

-- Build files have been written to: /home/pi/fbcp-ili9341/build
pi@raspberrypi:~/fbcp-ili9341/build $ make -j
Scanning dependencies of target fbcp-ili9341
[  4%] Building CXX object CMakeFiles/fbcp-ili9341.dir/display.cpp.o
[  9%] Building CXX object CMakeFiles/fbcp-ili9341.dir/dma.cpp.o
c++: error: unrecognized argument in option ‘-mabi=aapcs-linux’
c++: note: valid arguments to ‘-mabi=’ are: ilp32 lp64
c++: error: unrecognized argument in option ‘-mtls-dialect=gnu2’
c++: note: valid arguments to ‘-mtls-dialect=’ are: desc trad
[ 14%] Building CXX object CMakeFiles/fbcp-ili9341.dir/gpu.cpp.o
c++: error: unrecognized command-line option ‘-marm’
[ 19%] Building CXX object CMakeFiles/fbcp-ili9341.dir/diff.cpp.o
c++: error: unrecognized argument in option ‘-mabi=aapcs-linux’
c++: note: valid arguments to ‘-mabi=’ are: ilp32 lp64
c++: error: unrecognized argument in option ‘-mtls-dialect=gnu2’
c++: note: valid arguments to ‘-mtls-dialect=’ are: desc trad
c++: error: unrecognized argument in option ‘-mabi=aapcs-linux’
c++: note: valid arguments to ‘-mabi=’ are: ilp32 lp64
c++: error: unrecognized command-line option ‘-mhard-float’
c++: error: unrecognized argument in option ‘-mtls-dialect=gnu2’
c++: note: valid arguments to ‘-mtls-dialect=’ are: desc trad
c++: error: unrecognized command-line option ‘-marm’
[ 23%] Building CXX object CMakeFiles/fbcp-ili9341.dir/hx8357d.cpp.o
c++: error: unrecognized command-line option ‘-marm’
c++: error: unrecognized command-line option ‘-mhard-float’
[ 28%] Building CXX object CMakeFiles/fbcp-ili9341.dir/fbcp-ili9341.cpp.o
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
c++: error: unrecognized command-line option ‘-mhard-float’
[ 33%] Building CXX object CMakeFiles/fbcp-ili9341.dir/ili9341.cpp.o
c++: error: unrecognized argument in option ‘-mabi=aapcs-linux’
c++: note: valid arguments to ‘-mabi=’ are: ilp32 lp64
c++: error: unrecognized argument in option ‘-mtls-dialect=gnu2’
c++: note: valid arguments to ‘-mtls-dialect=’ are: desc trad
c++: error: unrecognized argument in option ‘-mabi=aapcs-linux’
c++: note: valid arguments to ‘-mabi=’ are: ilp32 lp64
c++: error: unrecognized argument in option ‘-mtls-dialect=gnu2’
c++: note: valid arguments to ‘-mtls-dialect=’ are: desc trad
[ 38%] Building CXX object CMakeFiles/fbcp-ili9341.dir/ili9486.cpp.o
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
c++: error: unrecognized command-line option ‘-marm’
c++: error: unrecognized argument in option ‘-mabi=aapcs-linux’
c++: note: valid arguments to ‘-mabi=’ are: ilp32 lp64
c++: error: unrecognized argument in option ‘-mtls-dialect=gnu2’
c++: note: valid arguments to ‘-mtls-dialect=’ are: desc trad
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
c++: error: unrecognized command-line option ‘-marm’
c++: error: unrecognized command-line option ‘-mhard-float’
c++: error: unrecognized command-line option ‘-marm’
c++: error: unrecognized argument in option ‘-mabi=aapcs-linux’
c++: note: valid arguments to ‘-mabi=’ are: ilp32 lp64
c++: error: unrecognized argument in option ‘-mtls-dialect=gnu2’
c++: note: valid arguments to ‘-mtls-dialect=’ are: desc trad
c++: error: unrecognized command-line option ‘-mhard-float’
c++: error: unrecognized command-line option ‘-marm’
make[2]: *** [CMakeFiles/fbcp-ili9341.dir/build.make:95: CMakeFiles/fbcp-ili9341.dir/display.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/fbcp-ili9341.dir/build.make:108: CMakeFiles/fbcp-ili9341.dir/dma.cpp.o] Error 1
make[2]: *** [CMakeFiles/fbcp-ili9341.dir/build.make:134: CMakeFiles/fbcp-ili9341.dir/gpu.cpp.o] Error 1
c++: error: unrecognized argument in option ‘-mabi=aapcs-linux’
c++: note: valid arguments to ‘-mabi=’ are: ilp32 lp64
c++: error: unrecognized argument in option ‘-mtls-dialect=gnu2’
c++: note: valid arguments to ‘-mtls-dialect=’ are: desc trad
c++: error: unrecognized command-line option ‘-mhard-float’
c++: error: unrecognized command-line option ‘-mhard-float’
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
make[2]: *** [CMakeFiles/fbcp-ili9341.dir/build.make:147: CMakeFiles/fbcp-ili9341.dir/hx8357d.cpp.o] Error 1
c++: error: unrecognized command-line option ‘-marm’
[ 42%] Building CXX object CMakeFiles/fbcp-ili9341.dir/keyboard.cpp.o
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
make[2]: *** [CMakeFiles/fbcp-ili9341.dir/build.make:82: CMakeFiles/fbcp-ili9341.dir/diff.cpp.o] Error 1
[ 47%] Building CXX object CMakeFiles/fbcp-ili9341.dir/ili9488.cpp.o
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
c++: error: unrecognized command-line option ‘-mhard-float’
make[2]: *** [CMakeFiles/fbcp-ili9341.dir/build.make:121: CMakeFiles/fbcp-ili9341.dir/fbcp-ili9341.cpp.o] Error 1
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
c++: error: unrecognized argument in option ‘-mabi=aapcs-linux’
c++: note: valid arguments to ‘-mabi=’ are: ilp32 lp64
c++: error: unrecognized argument in option ‘-mtls-dialect=gnu2’
c++: note: valid arguments to ‘-mtls-dialect=’ are: desc trad
make[2]: *** [CMakeFiles/fbcp-ili9341.dir/build.make:160: CMakeFiles/fbcp-ili9341.dir/ili9341.cpp.o] Error 1
c++: error: unrecognized argument in option ‘-mabi=aapcs-linux’
c++: note: valid arguments to ‘-mabi=’ are: ilp32 lp64
c++: error: unrecognized argument in option ‘-mtls-dialect=gnu2’
c++: note: valid arguments to ‘-mtls-dialect=’ are: desc trad
c++: error: unrecognized command-line option ‘-marm’
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
c++: error: unrecognized command-line option ‘-marm’
make[2]: *** [CMakeFiles/fbcp-ili9341.dir/build.make:173: CMakeFiles/fbcp-ili9341.dir/ili9486.cpp.o] Error 1
c++: error: unrecognized command-line option ‘-mhard-float’
c++: error: unrecognized command-line option ‘-mhard-float’
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
make[2]: *** [CMakeFiles/fbcp-ili9341.dir/build.make:199: CMakeFiles/fbcp-ili9341.dir/keyboard.cpp.o] Error 1
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
make[2]: *** [CMakeFiles/fbcp-ili9341.dir/build.make:186: CMakeFiles/fbcp-ili9341.dir/ili9488.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/fbcp-ili9341.dir/all] Error 2
make: *** [Makefile:103: all] Error 2
pi@raspberrypi:~/fbcp-ili9341/build $ 
leo60228 commented 2 years ago

This is a duplicate of #43. Note that fbcp-ili9341 works fine on a 64-bit kernel, it just needs to run as a 32-bit process. I'm not sure how to build a 32-bit application on 64-bit Raspbian, but I assume it's possible.