Copied from math.stackexchange: Another way to approach this avoids the use of duality via inner-products. Functorality should be clear. It may be that one requires finite rank free modules here so that the bilnear pairing below is perfect.
The bilinear pairing is,
$$
V \times \Lambda^{n-1} V \to \Lambda^n V
$$
sending
$$
(v, \eta) \to v \wedge \eta
$$
and written
$$
\langle v, \eta \rangle = v \wedge \eta.
$$
Then given $T : V \to V$, we define,
$$
\Lambda^{n-1} T : \Lambda^{n-1} V \to \Lambda^{n-1} V
$$
on indecomposable elements by
$$
\Lambda^{n-1} T (v_1 \wedge \cdots v_{n-1}) = T(v_1) \wedge \cdots \wedge T(v_{n-1})
$$
and extend to all of $\Lambda^{n-1} V$ by alternating multilinearity as usual.
The adjugate $\operatorname{adj}(T) : V \to V$ is the adjoint of $\Lambda^{n-1} T$ with respect to the pairing:
$$
\langle \operatorname{adj}(T) (v), \eta \rangle = \langle v, \Lambda^{n-1} T (\eta) \rangle,
$$
or using the definition of the pairing,
$$
\operatorname{adj} (T) (v) \wedge \eta = V \wedge \Lambda^{n-1} T \eta
$$
Now one observes that,
$$
\begin{split}
\langle \operatorname{adj} (T) \circ T (v), \eta\rangle &= \langle T(v), \Lambda^{n-1} T(\eta)\rangle \\
&= T(v) \wedge \Lambda^{n-1} T (\eta) \\
&= \Lambda^{n} T (v \wedge \eta) \\
&= \det T v \wedge \eta \\
&= \langle \det T v, \eta \rangle
\end{split}
$$
If the pairing is perfect, this implies that,
$$
\operatorname{adj} (T) \circ T = \det T \operatorname{Id}.
$$
In particular, if $\det T$ is an invertible element of the underlying ring, then $\det T \operatorname{Id}$ is invertible and $\operatorname{adj} (T)$ commutes with $T$ (which both are invertible) as well as satisfying,
$$
\operatorname{adj} (T) = \det T T^{-1}
$$
which is the usual formula.
This all explained (sections 5 to 8) here:
http://people.reed.edu/~jerry/332/27exterior.pdf