Police told reporters that the man had just come through the doors in Terminal B when he fired at least one shot into the ceiling.
A Homeland Security Investigations agent was working in an office near the scene, came out and told the man to drop his weapon. The agent fired once at the suspect, who appeared to try to shoot himself at the same time.
An autopsy will determine whose bullet killed the man, who has not been identified, police said.
CNN affiliate KHOU reported the man walked into the terminal with a military-style, semiautomatic rifle and fired two shots into the ceiling.
The station interviewed a woman who works at a McDonald’s in the terminal.
“As soon as he walked in, he just automatically started shooting quickly,” said the employee, who said her name is Kendra. “And we hear two shots and we just automatically started running. We ran all the way to the back.”
Roxanne Mena, with the Harris County Medical Examiner’s Office, said a team was going to the airport to pick up the body of a male gunshot victim.
The shooting occurred near the ticketing counter in the terminal.
The terminal was closed and passengers were being screened, then moved to another terminal, KHOU reported.
The Federal Aviation Administration says flights arriving Thursday afternoon at Houston’s George Bush Intercontinental Airport were delayed by nearly an hour because of a “security” issue, presumably related to the shooting.