Two things:
- You cannot get a global address from a link-local address, they are be completely unrelated
- You can route using link-local addresses
Routing using link-local addresses is no problem at all. The only thing you have to remember is to explicitly state the outgoing interface in addition to the link-local next hop address.
Here are a few lines from my local routing table (this is Mac OS X, but the concept is the same for i.e. Linux and Windows):
Internet6:
Destination Gateway Flags Netif Expire
default fe80::222:83ff:feb5:964b%en0 UGc en0
::1 link#1 UHL lo0
2a00:8640:1::/64 link#4 UC en0
As you can see my default gateway is fe80::222:83ff:feb5:964b%en0
. This is what my PC learned from a Router Advertisement.
In routing the next-hop (or gateway) address is literally only used to determine the next hop. On ethernet the next-hop IPv6 address is used to look up the MAC address on the local LAN where the packet should be sent, and using a link-local address for that is no problem at all. A global address could also be used, but is not required. If you don't have it: just use the link-local address.