Cloud radio access network (C-RAN) aims to improve the spectrum and energy efficiency of wireless communication networks by migrating conventional distributed base station functionalities into a centralized cloud baseband unit (BBU) pool. We investigate a cross-layer resource allocation model for C-RAN to minimize the overall system power consumption in both the BBU pool and the remote radio heads (RRHs), while guaranteeing the cross-layer QoS. We characterize the cross-layer resource allocation problem as a mixed-integer nonlinear programming (MINLP), which is however NP-hard. By relaxing the original MINLP problem to a quasi weighted sum-rate maximization (QWSRM) problem, we utilize a branch and bound method to solve the QWSRM problem, and propose a low-complexity bisection search algorithm to obtain a sparse solution for RRH selection problem. Simulation results suggest that our cross-layer approach achieves more energy savings than the recently proposed greedy selection and successive selection algorithms for optimal RRH selection.