ORA-00942: table or view does not exist while creating synonym
In the SQL Language Reference you will find under Prerequesites (emphasized by me):


  The owner of the schema containing the view must have the privileges necessary to either select (READ or SELECT privilege), insert, update, or delete rows from all the tables or views on which the view is based. The owner must be granted these privileges directly, rather than through a role.


So you have to grant the privilges directly to the user that creates the view. 

The same is true for PL/SQL procedures and is already discussed in this post.

There are two ways to grant a select privilege directly:


grant it by an object privilege: grant select on A_TABLE to A_USER;
grant it by a system privilege: grant select any table to A_USER;


The latter is not recommended, granted such an ANY system privileges to non DBA users is considered as a security risk.

Such ANY privileges exists for a lot of procedures and actions, e.g. INSERT ANY TABLE, EXECUTE ANY PROCEDURE,...