Owner has to grant EXECUTE on the procedure to another user; the rest is trivial (just make sure you have named the owner along with the procedure name).
Here's an example (user 'scott' has created a procedure, while user 'mike' creates a synonym for scott's procedure):
SQL> create or replace procedure prc_test as
SQL> grant execute on prc_test to mike;
SQL> connect mike/lion@ora10
SQL> create synonym prc_syn_test for scott.prc_test;
SQL> set serveroutput on;
SQL> exec prc_syn_test;
PL/SQL procedure successfully completed.