In a large mixing bowl, combine 2 cups of flour, sugar, yeast, and salt. Mix well.
In a saucepan, heat the milk and butter over medium heat until the butter is melted. Allow it to cool until warm (about 110°F).
Add the warm milk mixture to the dry ingredients, followed by the eggs. Mix combined thoroughly.
Gradually add the remaining flour, ½ cup at a time, until a soft dough forms. Knead the dough on a lightly floured surface for about 5-10 minutes until smooth and elastic.
Place the dough in a greased bowl and cover with plastic wrap. Let it rise in a warm area for about 1 hour or until doubled in size.
Preheat your oven to 350°F (175°C).
Once risen, punch down the dough and roll it out on a floured surface into a rectangle (about 16x24 inches).
Spread the softened butter for the filling evenly over the dough.
In a separate bowl, mix the brown sugar and cinnamon. Sprinkle this mixture over the buttered dough. If using, add chopped pecans evenly across the surface.
Roll the dough tightly from the long end into a log shape. Pinch the seams to seal.
Cut the log into 12 equal pieces. Place the rolls in a greased 9x13 inch baking dish. Cover with plastic wrap and let them rise for another 30 minutes.
Bake the cinnamon rolls in the preheated oven for 25-30 minutes, or until they are golden brown.
While the rolls are baking, prepare the frosting by whisking together the cream cheese, softened butter, powdered sugar, vanilla extract, and milk until smooth.
Once the cinnamon rolls are done baking, spread the frosting generously over them while they're still warm.