How did you add /home/pi/fpc-3.1/bin to your PATH variable?
It could be you added it only for the interactive bash shell (in which case it isn't in PATH when Lazarus is run).
Adding a symbolic link in /usr/local/bin will work because /usr/local/bin is already in PATH for your standard profile.
Below is my search path and if I do not make a symbolic link I cannot have Lazarus to build successfully.
You STILL didn't specify HOW you added the fpc-directory to the PATH. That's very important.
If you added it only for the interactive bash shell, you SEE the path when you check the path via a terminal, but it ISN'T present when running the desktop itself.
Note: Search path for desktop can be different from the search path for the interactive shell.
For instance... a simple check. Does the directory exists in the path with this:
procedure TForm1.Button1Click(Sender: TObject);
begin
Showmessage(GetEnvironmentVariable('PATH'));
end;
Look at the attached image. The PATH from the GUI (showmessage) comes from ~/.profile and the one from the terminal comes from ~\.bashrc. See, they are different (after reboot to make sure). I added the xxxx path to the .bashrc to show the difference. So where did you add the path?