[proofplan]
We cover the compact manifold $X$ by finitely many bundle-trivializing open sets. On each trivializing set, the vector bundle has a smooth local frame of $k$ sections. A smooth [partition of unity](/page/Partition%20of%20Unity) subordinate to the finite trivializing cover lets us multiply these local frame sections by cutoff functions and extend them by zero to global smooth sections. At any point, at least one cutoff function is nonzero, so the corresponding scaled local frame spans the fibre.
[/proofplan]
[step:Choose finitely many bundle trivializations covering $X$]
For each point $x \in X$, since $\pi: E \to X$ is a smooth rank-$k$ vector bundle, there exist an open neighbourhood $U_x \subset X$ of $x$ and a smooth bundle trivialization
\begin{align*}
\Phi_x: \pi^{-1}(U_x) &\to U_x \times \mathbb{R}^k
\end{align*}
covering the identity map on $U_x$. The family $\{U_x : x \in X\}$ is an open cover of $X$. Since $X$ is compact, there exist points $x_1, \dots, x_m \in X$ such that
\begin{align*}
X = \bigcup_{j=1}^m U_{x_j}.
\end{align*}
For each $j \in \{1, \dots, m\}$, set $U_j := U_{x_j}$ and $\Phi_j := \Phi_{x_j}$.
[/step]
[step:Extract local frames from the finite trivializations]
Let $e_1, \dots, e_k$ denote the standard basis of $\mathbb{R}^k$. For each $j \in \{1, \dots, m\}$ and each $a \in \{1, \dots, k\}$, define the local smooth section
\begin{align*}
\sigma_{j,a}: U_j &\to E|_{U_j}
\end{align*}
by requiring
\begin{align*}
\Phi_j(\sigma_{j,a}(x)) = (x, e_a)
\end{align*}
for every $x \in U_j$. Because $\Phi_j$ is a smooth bundle trivialization, each $\sigma_{j,a}$ is smooth, and for every $x \in U_j$ the vectors
\begin{align*}
\sigma_{j,1}(x), \dots, \sigma_{j,k}(x)
\end{align*}
form a basis of the fibre $E_x$.
[/step]
[step:Cut off the local frame sections and extend them globally]
By the [smooth partition of unity theorem](/theorems/3917) subordinate to a finite open cover (citing a result not yet in the wiki: Smooth Partition of Unity Subordinate to an Open Cover), there exist smooth functions
\begin{align*}
\psi_j: X &\to [0,1],
\qquad j \in \{1, \dots, m\},
\end{align*}
such that $\operatorname{supp}\psi_j \subset U_j$ for each $j$ and
\begin{align*}
\sum_{j=1}^m \psi_j(x) = 1
\end{align*}
for every $x \in X$.
For each $x \in X$, let $0_{E_x}$ denote the zero vector in the fibre $E_x$. For each pair $(j,a) \in \{1, \dots, m\} \times \{1, \dots, k\}$, define a global section
\begin{align*}
s_{j,a}: X &\to E
\end{align*}
as follows. If $x \in U_j$, set
\begin{align*}
s_{j,a}(x) = \psi_j(x)\sigma_{j,a}(x).
\end{align*}
If $x \in X \setminus \operatorname{supp}\psi_j$, set
\begin{align*}
s_{j,a}(x) = 0_{E_x}.
\end{align*}
This definition is consistent because $\operatorname{supp}\psi_j \subset U_j$, so every point outside $U_j$ lies in the [open set](/page/Open%20Set) where $\psi_j$ vanishes. On $U_j$, the section is the product of a smooth scalar function and a smooth local section. On $X \setminus \operatorname{supp}\psi_j$, it is the zero section. These two descriptions agree on their overlap, so $s_{j,a} \in \Gamma(E)$.
[guided]
The goal is to turn local frame sections into global sections without losing smoothness. The obstruction is that $\sigma_{j,a}: U_j \to E|_{U_j}$ is only defined on $U_j$, so we first multiply it by a smooth function that vanishes before reaching the boundary of $U_j$.
By the smooth partition of unity theorem subordinate to a finite open cover (citing a result not yet in the wiki: Smooth Partition of Unity Subordinate to an Open Cover), applied to the finite open cover $X = \bigcup_{j=1}^m U_j$, there exist smooth functions
\begin{align*}
\psi_j: X &\to [0,1],
\qquad j \in \{1, \dots, m\},
\end{align*}
with $\operatorname{supp}\psi_j \subset U_j$ and
\begin{align*}
\sum_{j=1}^m \psi_j(x) = 1
\end{align*}
for every $x \in X$.
For each $x \in X$, let $0_{E_x}$ denote the zero vector in the fibre $E_x$. For each $j$ and $a$, define
\begin{align*}
s_{j,a}: X &\to E
\end{align*}
as follows. If $x \in U_j$, set
\begin{align*}
s_{j,a}(x) = \psi_j(x)\sigma_{j,a}(x).
\end{align*}
If $x \in X \setminus \operatorname{supp}\psi_j$, set
\begin{align*}
s_{j,a}(x) = 0_{E_x}.
\end{align*}
Why is this a legitimate global definition? Since $\operatorname{supp}\psi_j \subset U_j$, the function $\psi_j$ vanishes on the open set $X \setminus \operatorname{supp}\psi_j$, and every point outside $U_j$ is certainly outside $\operatorname{supp}\psi_j$. Thus there is no point where we need to evaluate $\sigma_{j,a}$ outside its domain while $\psi_j$ is nonzero.
On $U_j$, the expression $x \mapsto \psi_j(x)\sigma_{j,a}(x)$ is smooth because scalar multiplication in a smooth vector bundle is smooth, $\psi_j$ is a smooth real-valued function, and $\sigma_{j,a}$ is a smooth local section. On $X \setminus \operatorname{supp}\psi_j$, the section is the smooth zero section. These two smooth local descriptions agree on the overlap, because there $\psi_j = 0$. Hence the gluing property for smooth sections gives $s_{j,a} \in \Gamma(E)$.
[/guided]
[/step]
[step:Show the constructed global sections span every fibre]
Let $x \in X$ be arbitrary. Since
\begin{align*}
\sum_{j=1}^m \psi_j(x) = 1,
\end{align*}
there exists an index $j_0 \in \{1, \dots, m\}$ such that $\psi_{j_0}(x) \neq 0$. Because $\operatorname{supp}\psi_{j_0} \subset U_{j_0}$, we have $x \in U_{j_0}$. The vectors
\begin{align*}
\sigma_{j_0,1}(x), \dots, \sigma_{j_0,k}(x)
\end{align*}
form a basis of $E_x$, and
\begin{align*}
s_{j_0,a}(x) = \psi_{j_0}(x)\sigma_{j_0,a}(x)
\end{align*}
for each $a \in \{1, \dots, k\}$. Multiplication by the nonzero scalar $\psi_{j_0}(x)$ preserves the span of a basis, so
\begin{align*}
E_x
= \operatorname{span}_{\mathbb{R}}\{s_{j_0,1}(x), \dots, s_{j_0,k}(x)\}
\subseteq \operatorname{span}_{\mathbb{R}}\{s_{j,a}(x) : 1 \le j \le m,\ 1 \le a \le k\}.
\end{align*}
The reverse inclusion holds because every $s_{j,a}(x)$ lies in $E_x$. Therefore
\begin{align*}
E_x = \operatorname{span}_{\mathbb{R}}\{s_{j,a}(x) : 1 \le j \le m,\ 1 \le a \le k\}.
\end{align*}
Since $x \in X$ was arbitrary, the finite family of $mk$ global smooth sections $\{s_{j,a}\}$ generates $E$ fibrewise. Relabeling this finite family as $s_1, \dots, s_N$ with $N := mk$ proves the theorem.
[/step]