• Recent
  • Tags
  • Popular
  • Home
  • Docs
  • Register
  • Login
RetroPie forum home
  • Recent
  • Tags
  • Popular
  • Home
  • Docs
  • Register
  • Login
Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Cannot compile lr-ppsspp (ffmpeg arc4random implicit declaration error)

Scheduled Pinned Locked Moved Help and Support
ppsspplr-ppssppffmpeg
5 Posts 2 Posters 505 Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M
    memorylane
    last edited by 24 Apr 2023, 19:22

    Hi, when compiling lr-ppsspp on a Raspberry pi 4b+ (aarch64), I get an error during linking:

    /usr/bin/ld: ../ffmpeg/linux/aarch64/lib/libavformat.a(avienc.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `__stack_chk_guard@@GLIBC_2.17' which may bind externally can not be used when making a shared object; recompile with -fPIC
    /usr/bin/ld: ../ffmpeg/linux/aarch64/lib/libavformat.a(avienc.o)(.text+0xc): unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol `__stack_chk_guard@@GLIBC_2.17'
    /usr/bin/ld: final link failed: bad value
    

    It's strange as in CMakeCache.txt I see

    //Set to ON to generate the libretro target
    LIBRETRO:BOOL=On
    

    so that it should compile pic according to https://github.com/hrydgard/ppsspp/blob/9fe6338e3bf397f8a009a51a282c139dfa180eb6/CMakeLists.txt#L192

    but I then see that there's some hackery going on with ffmpeg https://github.com/RetroPie/RetroPie-Setup/blob/master/scriptmodules/emulators/ppsspp.sh#L123

    And then I tried to build that manually, and realized that there has been an earlier error

    libavutil/random_seed.c: In function ‘av_get_random_seed’:
    libavutil/random_seed.c:130:12: error: implicit declaration of function ‘arc4random’; did you mean ‘srandom’? [-Werror=implicit-function-declaration]
      130 |     return arc4random();
          |            ^~~~~~~~~~
          |            srandom
    cc1: some warnings being treated as errors
    make: *** [common.mak:60: libavutil/random_seed.o] Error 1
    make: *** Waiting for unfinished jobs....
    

    for some reason, the script continues from this...

    After searching the internets, I found this related answer: https://stackoverflow.com/a/22187646

    I don't know what's the correct solution, but I guess, turning off arc4random and using /dev/urandom instead will not cause problems, so in config.h I manually set

    #define HAVE_ARC4RANDOM 0
    

    to test it out. It worked, so I added

    --- a/scriptmodules/emulators/ppsspp.sh
    +++ b/scriptmodules/emulators/ppsspp.sh
    @@ -101,6 +101,8 @@ function build_ffmpeg_ppsspp() {
             ${DEMUXERS} \
             ${MUXERS} \
             ${PARSERS}
    +
    +    sed -i "s/^#define HAVE_ARC4RANDOM 1/#define HAVE_ARC4RANDOM 0/" config.h
         make clean
         make install
     }
    

    to make the install script work.

    I am on unstable Debian

    luigi@planet-retro:~/RetroPie-Setup $ lsb_release -a
    No LSB modules are available.
    Distributor ID: Debian
    Description:    Debian GNU/Linux 12 (bookworm)
    Release:        12
    Codename:       bookworm
    

    Could someone reproduce this problem, and what would be the best way to resolve this?

    M 1 Reply Last reply 25 Apr 2023, 02:52 Reply Quote 0
    • M
      mitu Global Moderator @memorylane
      last edited by mitu 25 Apr 2023, 02:52

      ...
      I am on unstable Debian

      Since pre-release OSes may have newer compilers/libraries, there's the possibility they're not tested or supported upstream. I'll take a look, since the same failure happens on a regular x86_64 system and maybe our build_ffmpeg needs an update.

      btw, we only support (and test) RasPi OS - vanilla Debian is not supported by RetroPie.

      1 Reply Last reply Reply Quote 0
      • M
        mitu Global Moderator
        last edited by 25 Apr 2023, 15:27

        I've taken a look and the issue is fixed in a more recent PPSSPP version. Version 1.15 is nearing release, so the build will probably be fixed when we'll upgrade to that version.
        Thanks for the report.

        M 1 Reply Last reply 26 Apr 2023, 07:05 Reply Quote 1
        • M
          memorylane @mitu
          last edited by 26 Apr 2023, 07:05

          @mitu Is it only a matter of updating the source version in the install script? Which version did you try?

          M 1 Reply Last reply 26 Apr 2023, 08:08 Reply Quote 0
          • M
            mitu Global Moderator @memorylane
            last edited by 26 Apr 2023, 08:08

            @memorylane said in Cannot compile lr-ppsspp (ffmpeg arc4random implicit declaration error):

            @mitu Is it only a matter of updating the source version in the install script?

            Seems like it.

            Which version did you try?

            Latest stable release is 14.4 AFAIR.

            1 Reply Last reply Reply Quote 0
            5 out of 5
            • First post
              5/5
              Last post

            Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

            Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.

              This community forum collects and processes your personal information.
              consent.not_received